J'ai une communication HTTP avec un serveur Web demandant des données JSON. Je voudrais compresser ce flux de données avec Content-Encoding: gzip
. Existe-t-il un moyen de définir Accept-Encoding: gzip
dans mon HttpClient? La recherche gzip
dans les références Android n'affiche rien en rapport avec HTTP, comme vous pouvez le voir ici .
109
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. Plus précisément, la méthode parseResponse (...) devrait être ce que vous recherchez.Réponses:
Vous devez utiliser des en-têtes http pour indiquer qu'une connexion peut accepter des données codées gzip, par exemple:
Vérifiez la réponse pour l'encodage du contenu:
la source
gzip
pour vraiment activer compression gzip. (2) gardez à l'esprit que le serveur peut ne pas gzip la réponse si elle est trop petite ...Si vous utilisez le niveau d'API 8 ou supérieur, il y a AndroidHttpClient .
Il a des méthodes d'aide comme:
et
conduisant à un code beaucoup plus succinct:
la source
Je pense que l'exemple de code sur ce lien est plus intéressant: ClientGZipContentCompression.java
Ils utilisent HttpRequestInterceptor et HttpResponseInterceptor
Échantillon pour demande:
Exemple de réponse:
la source
Je n'ai pas utilisé GZip, mais je suppose que vous devriez utiliser le flux d'entrée de votre
HttpURLConnection
ouHttpResponse
asGZIPInputStream
, et non d'une autre classe spécifique.la source
Dans mon cas, c'était comme ça:
la source