Android Volley:gzip响应

我们必须使用什么类型的响应监听器来处理Android Volley的gzip响应?

如果使用String侦听器,则该响应似乎会丢失其编码。

如何使用Volley处理gzip响应?

MAJOR EDIT: HttpUrlConnection自动将gzip头添加到请求中,并且如果响应被gzip压缩,它将无缝解码并向您呈现响应。 所有gzip的东西都发生在幕后,你不需要按照要求发布的内容来回答这个问题。 请参阅这里的文档http://developer.android.com/reference/java/net/HttpURLConnection.html

事实上,我发布的答案不应该被使用,因为gzip解码非常慢,应该由HttpUrlConnection来处理。

以下是文档中的精确部分:

默认情况下,HttpURLConnection的这个实现请求服务器使用gzip压缩。 由于getContentLength()返回传输的字节数,因此不能使用该方法来预测可以从getInputStream()读取多少个字节。 相反,读取该流直至耗尽:read()返回-1。 通过在请求标头中设置可接受的编码,可以禁用Gzip压缩:

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


所以我想出了如何做到这一点。

基本上,我扩展了StringRequest,以便以不同的方式处理网络响应。

您只需使用GZipInputStream解析响应bytearray并返回结果字符串。

这是要点:https://gist.github.com/premnirmal/8526542


你应该使用离子,它是预先设置的

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
链接地址: http://www.djcxy.com/p/18559.html

上一篇: Android Volley: gzip response

下一篇: Setting background image with Jekyll