Estoy siguiendo este sitio web http://givemepass.blogspot.hk/2011/12/http-server.html a tratar de usar la aplicación para android conecte el PHP del servidor para obtener el mensaje.

GetServerMessage.java

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 org.apache.http.util.EntityUtils;
public class GetServerMessage {

    public String stringQuery(String url){
        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost method = new HttpPost(url);
            HttpResponse response = httpclient.execute(method);
            HttpEntity entity = response.getEntity();
            if(entity != null){
                return EntityUtils.toString(entity);
            }
            else{
                return "No string.";
            }
         }
         catch(Exception e){
             return "Network problem";
         }
    }
}

GetPhpServerMessageDemoActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class GetPhpServerMessageDemoActivity extends Activity {
    /** Called when the activity is first created. */
    private TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView)findViewById(R.id.text_view);
        GetServerMessage message = new GetServerMessage();
        String msg = message.stringQuery("http://192.168.1.88/androidtesting.php");
        textView.setText("Server message is "+msg);
    }

}

He intentado descargar la Aplicación para Android Proyecto de ese sitio http://uploadingit.com/file/d4632ekfpwjiupyn/GetPhpServerMessageDemo2.zip y ejecutar en mi teléfono, es un trabajo.
Pero cuando empiezo un nuevo proyecto (Minimuim Requeridos SDK: API8, Target SDK: API17, Compilar con: API17) y copiar estos dos códigos java. He añadido el permiso android.permission.INTERNET, así que no sé donde está el problema, sólo sé que cuando se ejecute HttpResponse response = httpclient.execute(method); hay un error y devuelve la Cadena «problema de Red».

  • Es NetworkOnMain?
InformationsquelleAutor Confucius | 2013-10-03

2 Comentarios

  1. 4

    Está ejecutando la red relacionados con la operación en el subproceso de interfaz de usuario. Usted recibirá NetworkOnMainThreadException post de nido de abeja.

    Utilizar un Thread o Asynctask

    Invocar asynctask

       new TheTask().execute("http://192.168.1.88/androidtesting.php");

    AsyncTask

    http://developer.android.com/reference/android/os/AsyncTask.html

    class TheTask extends AsyncTask<String,String,String>
        {
    
    @Override
    protected String onPostExecute(Void result) {
        //TODO Auto-generated method stub
        super.onPostExecute(result);
        //update textview here
        textView.setText("Server message is "+result);
    }
    
    @Override
    protected void onPreExecute() {
        //TODO Auto-generated method stub
        super.onPreExecute();
    }
    
    @Override
    protected String doInBackground(String... params) {
         try
            {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost method = new HttpPost(params[0]);
                HttpResponse response = httpclient.execute(method);
                HttpEntity entity = response.getEntity();
                if(entity != null){
                    return EntityUtils.toString(entity);
                }
                else{
                    return "No string.";
                }
             }
             catch(Exception e){
                 return "Network problem";
             }
    
    }
    }

    Actualización de HttpClient está en desuso en la api de 23. Uso HttpUrlConnection.

    HTML:

    http://developer.android.com/reference/java/net/HttpURLConnection.html

  2. 1

    Usted necesita para ejecutar las tareas de ejecución prolongada, como la red, las llamadas en un Thread como Sotirios Delimanolis dijo. AsyncTask es probablemente el camino a seguir.

Dejar respuesta

Please enter your comment!
Please enter your name here