Tag Archive for enviar

Enviar una peticion http POST desde Android a aplicación web (php)

La comunicación desde aplicaciones en dispositivos mobiles con servidores en la internet, es prácticamente una necesidad, siendo cada vez mas común encontrar este comportamiento en aplicaciones, es necesario comprender como se realiza esta comunicación. Basicamente lo que haremos es enviar una petición POST, muy similar a subir una forma con el metodo post desde un documento HTML a una aplicación en PHP, solamente que lo haremos desde Android, y siendo Android un sistema que utiliza Java, lo haremos utilizando ciertas librerías que nos permiten realizar esta comunicación desde Java.

Codigo de actividad en android que implementa la clase httpHandler

Ejemplo de aplicación sencilla que implemente una comunicación con una aplicación en PHP.

Codigo de clase en Java a implementar en Android para enviar peticiones a servidor web:

En esta clase lo que hacemos es implementar la comunicación, aqui estas todo lo que se necesita para enviar la petición a PHP junto con información.

import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

public class httpHandler {

  public String post(String posturl){

	  try {

		  HttpClient httpclient = new DefaultHttpClient();
/*Creamos el objeto de HttpClient que nos permitira conectarnos mediante peticiones http*/
		  HttpPost httppost = new HttpPost(posturl);
/*El objeto HttpPost permite que enviemos una peticion de tipo POST a una URL especificada*/
		  //AÑADIR PARAMETROS
		  List<NameValuePair> params = new ArrayList<NameValuePair>();
		  params.add(new BasicNameValuePair("data","Variable 1"));
		  params.add(new BasicNameValuePair("info","Otro mensaje"));
		/*Una vez añadidos los parametros actualizamos la entidad de httppost, esto quiere decir en pocas palabras anexamos los parametros al objeto para que al enviarse al servidor envien los datos que hemos añadido*/
  httppost.setEntity(new UrlEncodedFormEntity(params));

                  /*Finalmente ejecutamos enviando la info al server*/
		  HttpResponse resp = httpclient.execute(httppost);
		  HttpEntity ent = resp.getEntity();/*y obtenemos una respuesta*/

		  String text = EntityUtils.toString(ent);

		  return text;

	  }
	  catch(Exception e) { return "error";}

	}

}

 

Actividad en Android

En este codigo basicamente tenemos una actividad principal donde usamos una clase httpHandler para enviar una petición al servidor web.

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        httpHandler handler = new httpHandler();
        String txt = handler.post("http://192.168.0.19/app_android/app.php");

        TextView t = (TextView)findViewById(R.id.text1);
        t.setText(txt);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

Codigo en PHP:

EL codigo en PHP es lo mas sencillo, unicamente lo que hace es capturar información y regresarla, esta se captura como la “respuesta” desde Android.

<?php

	$dato = $_POST['data'];
	$info = $_POST['info'];
	echo $dato."\n".$info;
?>

 

Si deseas ver el proceso completo de como se creo este software te invito a ver los siguientes video tutoriales, donde implementamos este codigo.

Video tutorial para conectar Android con una aplicación en PHP

parte 1:

parte 2:

parte 3: