Http-запросы для php-страниц с Android

#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-адрес сервера