Peticiones HTTP ahora mucho más fáciles en Android

Buenas, muchas veces los programadores pecamos de inventar la rueda una vez tras otra y no nos paramos lo suficiente a buscar en el trabajo que otros nos ofrecen ya preparado. El hecho de no tener que pensar por nosotros mismos una parte de nuestro proyecto es una gran ventaja, ya que nos ayuda a centrarnos en otras partes que de otra forma quedarían más abandonadas.

Una de las páginas que más me gustan es Github, ya lo he comentado en otras ocasiones. Tanto por disponer de una plataforma a los desarrolladores para crear código conjuntamente, como su capacidad para compartir.

Hace poco buscando en esta web encontré una librería muy interesante, Android Asynchronous Http Client. Si queréis podéis visitar también su espacio en Github loopj android-async-http.

Esta librería es un cliente http con el cual podemos de una forma muy sencilla enviar y recibir información de forma asíncrona. Su utilización es muy sencilla y además como los propios autores indican, ocupa muy poco espacio.

Para añadir esta librería a nuestros proyectos simplemente debemos descargar el archivo .jar desde el enlace disponible en su página web. Una vez descargado, creamos una carpeta llamada libs en el raíz de nuestro proyecto.

En esa carpeta pegamos el archivo .jar. Si no aparece en Eclipse la carpeta o el archivo refrescamos el proyecto. Ahora desde Eclipse, hacemos botón derecho sobre el archivo .jar y seleccionamos Build Path -> Add to Build Path. Con esto ya está lista para utilizar la librería.

Como esta es una librería para hacer peticiones http no olvidéis en el archivo AndroidManifest.xml incluir el permiso para acceso a internet.

Aunque en la página web ya vienen algunos ejemplos muy sencillos, voy a incluir y explicar un ejemplo básico.

AsyncHttpClient client = new AsyncHttpClient();
RequestParams rp = new RequestParams();
rp.put("param1", value1);
rp.put("param2", value2);
client.post("url a la que hacemos la peticion",rp, new JsonHttpResponseHandler(){
 @Override
 public void onSuccess(JSONObject jObject){    
     
 }   
 @Override
 public void onFailure(Throwable arg0){
     
 }
}); 

El ejemplo que os pongo es un poco diferente a lo que viene en la web. Os explico como funciona.

Lo primero es crearnos un objeto de la clase AsyncHttpClient de la librería que hemos añadido a nuestro proyecto. Con este objeto haremos todo el proceso de envío y recepción.

Luego creamos el objeto "rp" de tipo RequestParams. En este objeto añadiremos los diferentes parámetros que enviaremos a la url que nosotros queramos. En caso de no tener que enviar parámetros podemos obviar este paso.

Una vez listo lo que tenemos que enviar tenemos dos opciones, o bien llamar al método get o post de nuestro objeto client. Cual utilicemos dependerá de como recoja los parámetros nuestro sitio web al que apuntamos.

Cualquiera de estos dos tiene los mismo parámetros, primero la url a la que hacemos la petición. Después y opcionalmente los RequestParams rp y por último un listener con el cual recogeremos la respuesta que devuelva nuestra url. Este listener puede estar preparado para recoger un objeto json como en el caso que he puesto aquí o como en otros casos que hay en la web del autor podemos recoger una respuesta sencilla con el listener AsyncHttpResponseHandler o incluso datos binarios con BinaryHttpResponseHandler.

Para estos listener tenemos el método onSuccess que se disparará en cuanto se descargue correctamente la información. Por lo que vi en los ejemplos de la web del autor el método onFailure no se menciona, pero existe y se debe utilizar para cuando la petición falla y debemos avisar al usuario.

Para finalizar, os aconsejo que le echéis un vistazo a la web del autor y sobre todo a su sitio en Github, es en este donde de momento hay una gran actividad y podéis buscar cualquier duda que tengáis sobre cosas más complicadas que se os ocurran hacer con esta librería, así como preguntar dudas que no aparecen.

Comments are closed.