Archivos del mes: 25 marzo 2013

Activar Gzip en peticiones Http en Android

Después de llevar mucho tiempo trabajando con las aplicaciones llegué a la conclusión que era necesario reducir la cantidad de datos que se consumía por parte del usuario. Aunque revisando las estadísticas de una persona que hace uso a diario de Infobolsa CED desde el mes de Noviembre no ha llegado a las 400kb es necesario seguir reduciendo esa cantidad de datos.

Para ello, nos pusimos con intentar hacer uso de las cabeceras Gzip en Android. Todo lo necesario es llamar a este método que hemos implementado justo al crear el objeto DefaultHttpClient


private void addGzipInterceptors(DefaultHttpClient httpclient){
	httpclient.addRequestInterceptor(new HttpRequestInterceptor() {

		public void process(
                    final HttpRequest request,
                    final HttpContext context) throws HttpException, IOException {
               if (!request.containsHeader("Accept-Encoding")) {
                   request.addHeader("Accept-Encoding", "gzip");
               }
           }

        });

    httpclient.addResponseInterceptor(new HttpResponseInterceptor() {

         public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    Header ceheader = entity.getContentEncoding();
                    if (ceheader != null) {
                        HeaderElement[] codecs = ceheader.getElements();
                        for (int i = 0; i < codecs.length; i++) {
                            if (codecs[i].getName().equalsIgnoreCase("gzip")) {
                                response.setEntity(
                                        new CtrlzAppsGzipDescompressingEntity(response.getEntity()));
                                return;
                            }
                        }
                    }
                }
            }
        });
}

Leer más →

Conexiones múltiples con HttpClient en Android

A veces, la configuración del servidor al que vamos a relizar peticiones nos obliga a tener configurado un Pool de conexiones con HttpClient. Esto es necesario cuando debemos simular varios click o una navegación más compleja.
La pregunta es, ¿cuándo es obligatorio realizar esto? Muy sencillo, cuando nos encontramos con la siguiente excepción

Invalid use of BasicClientConnManager: connection still allocated

Leer más →

A %d blogueros les gusta esto: