Tengo una comunicación HTTP con un servidor web que solicita datos JSON. Me gustaría comprimir este flujo de datos con Content-Encoding: gzip
. ¿Hay alguna forma de que pueda configurar Accept-Encoding: gzip
en mi HttpClient? La búsqueda gzip
en las Referencias de Android no muestra nada relacionado con HTTP, como puede ver aquí .
109
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. Específicamente, el método parseResponse (...) debería ser lo que estás buscando.Respuestas:
Debe usar encabezados http para indicar que una conexión puede aceptar datos codificados en gzip, por ejemplo:
Verifique la respuesta para la codificación del contenido:
fuente
gzip
para habilitar realmente compresión gzip. (2) tenga en cuenta que es posible que el servidor no gzip la respuesta si es demasiado pequeña ...Si está utilizando el nivel de API 8 o superior, existe AndroidHttpClient .
Tiene métodos de ayuda como:
y
conduciendo a un código mucho más sucinto:
fuente
Creo que la muestra de código en este enlace es más interesante: ClientGZipContentCompression.java
Ellos están usando HttpRequestInterceptor y HttpResponseInterceptor
Muestra por solicitud:
Muestra por respuesta:
fuente
No he usado GZip, pero supongo que debería usar el flujo de entrada de su
HttpURLConnection
oHttpResponse
comoGZIPInputStream
, y no otra clase específica.fuente
En mi caso fue así:
fuente