Android Volley:gzip响应

前端之家收集整理的这篇文章主要介绍了Android Volley:gzip响应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们必须使用什么类型的响应监听器来处理 Android Volley的gzip响应?

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

你如何使用Volley处理gzip响应?

主要编辑:
HttpUrlConnection会自动将gzip标头添加到请求中,如果响应被gzip压缩,它将无缝解码并向您呈现响应.所有的gzip都发生在幕后,你不需要做我在gist中发布的内容作为这个问题的答案.请参阅此处的文档http://developer.android.com/reference/java/net/HttpURLConnection.html

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

这是文档中的确切部分:

By default,this implementation of HttpURLConnection requests that
servers use gzip compression. Since getContentLength() returns the
number of bytes transmitted,you cannot use that method to predict how
many bytes can be read from getInputStream(). Instead,read that
stream until it is exhausted: when read() returns -1. Gzip compression
can be disabled by setting the acceptable encodings in the request
header:

urlConnection.setRequestProperty(“Accept-Encoding”,“identity”);

解决方法

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

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

您可以使用GZipInputStream解析响应bytearray并返回结果字符串.

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

猜你在找的Android相关文章