Android: HTTP communication doit utiliser “Accept-Encoding: gzip”
J'ai une communication HTTP à un serveur web demandant des données JSON. Je voudrais compresser ce flux de données avec Content-Encoding: gzip
. Est-il possible que je peux configurer Accept-Encoding: gzip
dans mon HttpClient? La recherche de gzip
dans l'Android Références n'est pas tout ce qui est lié à HTTP, comme vous pouvez le voir ici.
- Android-WebRequest prend en charge GZIP et non compressé réponses automatiquement, par exemple, avec
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. Plus précisément, la méthode parseResponse(...) devrait être ce que vous cherchez.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser les en-têtes http pour indiquer une connexion peut accepter gzip données codées, de l'e.g:
Case de réponse pour le codage de contenu:
gzip
à vraiment activer la compression gzip. (2) gardez à l'esprit que le serveur peut ne pas gzip la réponse, si elle est trop petite...addHeader(...)
dansAndroidHttpClient
s'méthodemodifyRequestToAcceptGzipResponse(...)
de sorte que vous devriez utiliser.Si vous utilisez l'API de niveau 8 ou au-dessus il y a AndroidHttpClient.
Il a helper, comme:
et
conduisant à beaucoup plus succincte code:
Je pense que l'exemple de code sur ce lien qui est plus intéressant:
ClientGZipContentCompression.java
Ils sont à l'aide de HttpRequestInterceptor et HttpResponseInterceptor
De l'échantillon pour la requête:
Exemple de réponse:
Je n'ai pas utilisé GZip, mais je suppose que vous devez utiliser le flux d'entrée de votre
HttpURLConnection
ouHttpResponse
commeGZIPInputStream
, et pas certains autres de la classe.Dans mon cas c'était comme ça: