Ich habe eine HTTP-Kommunikation mit einem Webserver, der JSON-Daten anfordert. Ich möchte diesen Datenstrom mit komprimieren Content-Encoding: gzip
. Gibt es eine Möglichkeit, die ich Accept-Encoding: gzip
in meinem HttpClient festlegen kann ? Die Suche gzip
in den Android-Referenzen zeigt nichts im Zusammenhang mit HTTP an, wie Sie hier sehen können .
109
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. B. mit . Insbesondere sollte die Methode parseResponse (...) genau das sein, wonach Sie suchen.Antworten:
Sie sollten http-Header verwenden, um anzugeben, dass eine Verbindung gzip-codierte Daten akzeptieren kann, z.
Überprüfen Sie die Antwort auf Inhaltskodierung:
quelle
gzip
, damit sie wirklich aktiviert werden kann gzip-Komprimierung. (2) Denken Sie daran, dass der Server die Antwort möglicherweise nicht komprimiert, wenn sie zu klein ist ...Wenn Sie API Level 8 oder höher verwenden, gibt es AndroidHttpClient .
Es hat Hilfsmethoden wie:
und
was zu einem viel prägnanteren Code führt:
quelle
Ich denke, das Codebeispiel unter diesem Link ist interessanter: ClientGZipContentCompression.java
Sie verwenden HttpRequestInterceptor und HttpResponseInterceptor
Beispiel für Anfrage:
Beispiel für eine Antwort:
quelle
Ich habe GZip nicht verwendet, aber ich würde davon ausgehen, dass Sie den Eingabestream von Ihrer
HttpURLConnection
oderHttpResponse
alsGZIPInputStream
und nicht eine bestimmte andere Klasse verwenden sollten.quelle
In meinem Fall war es so:
quelle