2014-01-15 17 views
6

Welche Art von Antwort Listener müssen wir verwenden, um Gzip Antworten mit Android Volley zu behandeln?Android Volley: gzip Antwort

Wenn ein String-Listener verwendet wird, scheint die Antwort ihre Codierung zu verlieren.

Wie behandeln Sie Gzip-Antworten mit Volley?

MAJOR EDIT: HttpURLConnection automatisch fügt die gzip Header auf Anfragen, und wenn die Antwort im gzip ist, wird es nahtlos dekodieren und präsentieren Ihnen die Antwort. Alle gzip-Sachen passieren hinter den Kulissen und Sie müssen nicht tun, was ich in einem Geiste als Antwort auf diese Frage gepostet habe. Lesen Sie die Dokumentation hier http://developer.android.com/reference/java/net/HttpURLConnection.html

als eine Angelegenheit der Tat, die Antwort, die ich geschrieben , sollten Sie nicht verwendet werden, da die gzip-Decodierung extrem langsam ist, und sollte von HttpURLConnection behandelt werden gelassen werden.

Hier ist die genaue Stück aus der Dokumentation:

standardmäßig diese Implementierung von HttpURLConnection fordert, dass Server gzip-Kompression. Da getContentLength() die Anzahl der übertragenen Bytes zurückgibt, können Sie diese Methode nicht verwenden, um vorherzusagen, wie viele Bytes von getInputStream() gelesen werden können ( ). Lesen Sie stattdessen den Stream , bis er erschöpft ist: Wenn read() -1 zurückgibt. Gzip-Komprimierung kann durch Einstellen des akzeptablen Codierungen in der Anfrage Header deaktiviert werden:

urlConnection.setRequestProperty("Accept-Encoding", "identity");

Antwort

2

So habe ich herausgefunden, wie dies zu tun.

Grundsätzlich habe ich StringRequest erweitert, so dass es die Netzwerkantwort anders behandelt.

Sie können das Antwort-Bytearray nur mit GZipInputStream analysieren und die resultierende Zeichenfolge zurückgeben.

Hier ist der Kern: https://gist.github.com/premnirmal/8526542

+1

Der obige Link verfügbar kommt voreingestellt ist, ist nicht mehr, könnten Sie bitte Ihre Antwort bearbeiten und Ihren Code zu veröffentlichen, Ich habe dasselbe Problem. – NullPointer

+0

aktualisiert den Link https://gist.github.com/premnirmal/8526542 – Prem

0

Sie ion verwenden sollten, ,, es mit

Transparent usage of HTTP features and optimizations: 
SPDY and HTTP/2 
Caching 
Gzip/Deflate Compression 
Connection pooling/reuse via HTTP Connection: keep-alive 
Uses the best/stablest connection from a server if it has multiple IP addresses 
Cookies 
Verwandte Themen