Tenho uma comunicação HTTP para um servidor da web solicitando dados JSON. Eu gostaria de compactar esse fluxo de dados com Content-Encoding: gzip
. Existe uma maneira de definir Accept-Encoding: gzip
em meu HttpClient? A busca por gzip
nas Referências do Android não mostra nada relacionado a HTTP, como você pode ver aqui .
109
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. Especificamente, o método parseResponse (...) deve ser o que você está procurando.Respostas:
Você deve usar cabeçalhos http para indicar que uma conexão pode aceitar dados codificados por gzip, por exemplo:
Verifique a resposta para codificação de conteúdo:
fonte
gzip
para realmente ativar Compressão gzip. (2) lembre-se de que o servidor pode não fazer o gzip da resposta se for muito pequena ...Se você estiver usando a API de nível 8 ou superior, há AndroidHttpClient .
Possui métodos auxiliares como:
e
levando a um código muito mais sucinto:
fonte
Acho que a amostra de código neste link é mais interessante: ClientGZipContentCompression.java
Eles estão usando HttpRequestInterceptor e HttpResponseInterceptor
Amostra para solicitação:
Amostra para resposta:
fonte
Eu não usei o GZip, mas presumo que você deva usar o fluxo de entrada de seu
HttpURLConnection
ouHttpResponse
asGZIPInputStream
, e não alguma outra classe específica.fonte
No meu caso foi assim:
fonte