Android Asynchronous HTTP Client (LOOPJ)

Share:
Hola amigos  en esta ocasión vengo a compartirles  una poderosa herramienta que resulta demasiada útil cuando queremos desarrollar una aplicación que va consumir recursos de un webservice.




Android Asynchronous Http Client



Es una librería para Android construido sobre bibliotecas HttpClient de Apache. Todas las solicitudes se realizan fuera del hilo principal de la interfaz de usuario de la aplicación, pero cualquier lógica de devolución de llamada se ejecutará en el mismo subproceso que la devolución de llamada se creó mediante el paso del mensaje del controlador de Android.

Caracteristicas

  • Hace uso de HttpClient 4.3.6 en lugar del clásico DefaultHttpClient
  • Es compatible con el API 23 hacia adelante
  • Realizar solicitudes HTTP asíncronas.
  • Gestiona respuestas en devoluciones de llamada anónimas.
  • Las peticiones HTTP ocurren fuera del subproceso de la interfaz de usuario.
  • Las solicitudes utilizan un subproceso para limitar el uso concurrente de recursos.
  • GET / POST constructor de params (RequestParams).
  • Subidas de archivos multipart sin bibliotecas adicionales de terceros
  • Cargas de JSON en streaming sin bibliotecas adicionales
  • Manejo de redirecciones circulares y relativas
  • Tamaño de la cabecera a su aplicación, sólo 90kb para todo
  • Reintentos automáticos de solicitudes inteligentes optimizados para conexiones móviles irregulares
  • Compatibilidad con decodificación de respuesta gzip automática para peticiones súper rápidas
  • Comunicación de protocolo binario con BinaryHttpResponseHandler
  • Respuesta integrada de análisis en JSON con JsonHttpResponseHandler
  • Guardar la respuesta directamente en el archivo con FileAsyncHttpResponseHandler
  • Tienda de galletas persistente, guarda cookies en las SharedPreferences de tu aplicación
  • Integración con Jackson JSON, Gson u otras bibliotecas de serialización JSON (de) con BaseJsonHttpResponseHandler
  • Compatibilidad con el analizador SAX con SaxAsyncHttpResponseHandler
  • Soporte para lenguajes y codificaciones de contenido, no sólo UTF-8

¿Como usarla?

Abrimos el fichero build-gradle dentro de la sección Gradle Scripts y agregamos la siguiente dependencia:

dependencies {
  compile 'com.loopj.android:android-async-http:1.4.9'
}


Habilitamos los permisos de internet:
    


Hecho esto solo nos falta importar la librería donde deseamos utilizarla:

import com.loopj.android.http.*;

Para consumir recursos de un API basta con instanciar la clase AsyncHttpClient:
private static AsyncHttpClient client = new AsyncHttpClient();

Para realizar una petición GET usaremos la siguiente sintaxis:
client.get("https://www.google.com", new AsyncHttpResponseHandler() {

    @Override
    public void onStart() {
        // called before request is started
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        // called when response HTTP status is "200 OK"
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // called when response HTTP status is "4XX" (eg. 401, 403, 404)
    }

    @Override
    public void onRetry(int retryNo) {
        // called when request is retried
 }
});
Para realizar peticiones POST usaremos una sintaxis muy similar a la anterior solo agregaremos un parametro extra que nos permitira enviar información al momento de realizar nuestra petición.Para enviar datos basta con instanciar un objeto de la clase RequestParams y usar el metodo put para enviar el valor que desea enviar:
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
Sintaxis Método POST:
client.post("https://www.google.com",params, new AsyncHttpResponseHandler() {

    @Override
    public void onStart() {
        // called before request is started
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        // called when response HTTP status is "200 OK"
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // called when response HTTP status is "4XX" (eg. 401, 403, 404)
    }

    @Override
    public void onRetry(int retryNo) {
        // called when request is retried
 }
});
Espero les sirva , la librería es demasiada útil y fácil de usar.Si desean conocer a mas profundidad esta libreria les recomiendo se pasen a revisar su documentación oficial.

1 comentario: