#php #android
#php #Android
Вопрос:
Я пытаюсь запросить php-страницу из моего приложения для Android. Текст ответа должен быть в виде EditText. Ну, текста ответа нет. Я не знаю, что я делаю не так, но в обычном классе Java, когда я system.out.println отвечаю, это действительно отображается. Что это с Android? Вот мой код:
package com.httprequests;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLConnection;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class httprequests extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button btnRequest;
EditText textRequest;
TextView mytextView;
BufferedReader buffereader;
URLConnection conn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnRequest=(Button)findViewById(R.id.btnRequest);
textRequest=(EditText)findViewById(R.id.textRequest);
mytextView=(TextView)findViewById(R.id.mytextView);
btnRequest.setOnClickListener(this);
}
@Override
public void onClick(View src) {
if(src==btnRequest)
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost("http://localhost/practice/index.php");
HttpResponse response;
try
{
response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
BufferedReader br=new BufferedReader(new InputStreamReader(stream));
String str;
while((str=br.readLine())!=null)
{
mytextView.setText(str);
}
}
catch(Exception e)
{
textRequest.setText(e.getMessage());
}
finally
{
try
{
buffereader.close();
}
catch(Exception e)
{
textRequest.setText(e.getMessage());
}
}
}
}
}
Ответ №1:
«http://localhost/practice/index.php » это не будет работать на Android box. Как если бы вы запускали свое приложение на Android, локальным хостом был бы сам ваш Android box, не было HTTP-сервера и php-скрипта.
Если вы хотите запустить свое приложение на emualtor, пожалуйста, замените «localhost» на «10.0.2.2» .
Если вы хотите разместить свое приложение на реальном устройстве, пожалуйста, замените «localhost» на ip-адрес или доменное имя компьютера, на котором размещен ваш php scirpt.
Комментарии:
1. Пожалуйста, поясните подробнее, как мне сохранить мой php-файл в Android box и как мне вообще добраться до моего Android box? У вас есть какой-нибудь пример кода, который я могу увидеть?
2. Если вы запускаете код на эмуляторе, вы должны можете заменить «localhost» на 10.0.2.2 .
Ответ №2:
Android не поддерживает localhost, поэтому вместо локального хоста используйтеhttp://10.0.2.2:8080/yourprojectname/index.php это сработает, или же измените ip-адрес на ip-адрес сервера