我们必须使用什么类型的响应监听器来处理 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 Volley:gzip响应的更多相关文章

  1. ios – AFNetworking启用GZIP

    我在AFNetworking网站上查看支持GZIP压缩“服务器响应的Gzip解压缩已经内置在AFNetworking中,因为NSURLConnection将使用content-encoding:gzipHTTP头自动解压缩响应.”–AFNetworking常见问题如何启用GZIP压缩,以便我可以从服务器压缩数据或已经默认为谢谢!

  2. 是否可以从我的iOS应用程序包中删除文件?

    解决方法无法删除捆绑包中的文件.必须对应用程序进行签名,如果以任何方式修改了包,它将不会通过签名.我能想到的唯一其他解决方案是设置Web服务,并让您的应用程序根据需要下载部分内容.这可能是也可能不是可行的解决方案,具体取决于您的应用实际执行的操作.

  3. android – 为什么Volley会回归到SSLV3?

    id=78187那么我的选择是什么?>我的假设是否正确,Volley会回归到SSLV3?换句话说,导致回退的原始失败是什么以及如何解决?>我最近下载了Volley,但我不确定它是最新的.我如何找到我的版本?

  4. android – Volley Server Error null null网络响应

    每次我尝试使用Volley的POST方法时,都会出现严重错误.我在getCause中得到null值,在getNetworkResponse.toString()中得到一些默认值.如果我使用GET方法,这工作正常(我从我的网址得到回复).任何人都可以帮我做什么?错误日志:Error:Error:com.android.volley.ServerError>>404>>[B@42b1e0d0>>nul

  5. android – Volley NetworkImageView清除缓存的图像

    有人知道是否可以使用GooglesVolley库从单个NetworkImageView清除缓存的图像?

  6. android Volley删除方法,为什么会发送空参数

    我有一些不明白从服务器发送请求与json和DELETE方法的问题.请求成功连接到服务器但服务器将收到的已发送参数为空.但标题请求工作正常!

  7. Android Studio Volley = NoClassDefFound?

    好吧,我决定同时试用Android的Volley网络库和新的AndroidStudioIDE.但是,我遇到了一些问题.我构建了volley.jar,将其复制到我的libs文件夹中以获取新项目,编辑build.gradle以包含volley,并在我的主要活动中设置静态ImageLoader和RequestQueue.但是,当我将应用程序加载到模拟器(4.2)上时,我最终得到了调用Volley时如下:Gradle编辑以支持库:有人介意我指向正确的方向吗?

  8. 添加ImageLoader时,getInstance(this)中的Android Volley错误

    ..有什么帮助吗?

  9. android – volley在通过导航抽屉将先前的片段替换为新片段时显示新片段中的先前片段响应

    我在导航图中总共有12个片段..每个片段都有一个凌空方法.每个片段显示自己的凌空响应,除了position=1和position=5片段.我的应用程序启动时情形1:i打开位置1片段,在打开位置5片段后,两个片段都具有位置1片段响应.场景2:如果我打开位置5片段并且在打开位置1片段之后比两个片段都具有位置1片段响应.场景1图像:场景2图像:我的片段事务方法类:解决方法问题出在viewPagers中,

  10. 如何使用volley库android创建圆角图像

    我从服务器获取方形的图像网址我必须使它成为圆角图像.实际上我正在使用排球库,我知道如何使用通用图像加载器和毕加索库创建圆角图像.在排球库我设置图像在网络imageview像setimageUrl请帮助我解决方法我找到了一个使imageview圆形的源代码,例如:https://github.com/hdodenhof/CircleImageView.这是扩展imageview,我只是让它扩展Net

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部