我们必须使用哪种类型的响应侦听器来通过Android Volley处理gzip响应?
如果使用String侦听器,则响应似乎会丢失其编码。
您如何使用Volley处理gzip响应?
主要编辑: 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解析响应字节数组,然后返回结果字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句