Android Accept-Encoding为gzip,deflate Http请求返回的结果为乱码
最近项目中遇到这样一个坑:
某一接口的HttpUrlConnection的请求返回结果为乱码,但PC浏览器直接打开是正常的。
效果图如下:
经过查阅代码发现,该接口的对应Header中有这么一段代码:
headers.put("Accept-Encoding", "gzip,deflate");
那么Accept-Encoding为gzip,deflate代表什么意思呢?
Accept-Encoding为gzip,deflate的含义
Accept-Encoding是用来设置从服务端返回的数据是否进行gzip压缩(gzip是一种数据格式,默认目前仅使用deflate算法压缩data部分)。
也就是说,如果客户端设置了gzip,deflate,等于告诉服务端,客户端是支持gzip格式的数据解压缩的。
若服务端支持gzip,deflate压缩方式,则客户端收到的数据则为gzip格式压缩的。
解决方案
第一种解决方案:
直接去掉headers.put(“Accept-Encoding”, “gzip,deflate”);
项目中,我们也是采用的此方法。
第二种解决方案:
解码服务端返回的gzip格式压缩的数据。
以下这段代码来自:http://blog.csdn.net/lzwglory/article/details/19548603
这里我并没有经过验证,直接copy过来的。
private String zipInputStream(InputStream is) throws IOException { GZIPInputStream gzip = new GZIPInputStream(is); BufferedReader in = new BufferedReader(new InputStreamReader(gzip, "UTF-8")); StringBuffer buffer = new StringBuffer(); String line; while ((line = in.readLine()) != null) buffer.append(line + "\n"); is.close(); return buffer.toString();
}
参考:
http://blog.csdn.net/tangzhide/article/details/53535543
http://www.bkjia.com/Javabc/1012944.html
http://blog.csdn.net/lzwglory/article/details/19548603
Android Accept-Encoding为gzip,deflate Http请求返回的结果为乱码相关推荐
- 设置Accept-Encoding为gzip,deflate,返回的网页是乱码
用C#写代码去获取网页内容. 其中request的header中,设置Accept-Encoding为gzip,deflate: req = (HttpWebRequest)WebRequest.Cr ...
- 请求表头headers设置Accept-Encoding为gzip,deflate,br时,python ——requets的get/post返回的结果有可能是乱码
爬取某页面的数据时,在我本机环境进行请求,返回的结果是正常的,即不乱码,但是把代码拷贝到其他电脑运行,返回的结果就是乱码了.如下: 我本机的请求结果: 其他电脑运行返回的数据是乱码的,无论是设置utf ...
- Android OkHttp+Retrofit+Rxjava+Hilt 的网络请求封装
今天给大家简单的封装一个现在比较流行的网络请求框架 第一步是导入我们所需要的依赖还需要在android {}闭包下添加一个 buildFeatures{viewBinding true } imple ...
- web中gzip,deflate的压缩与解压
一,对发送请求进行gzip,deflate压缩 1:gzip的情况 Java代码 Sring url = "http://localhost/save"; PostMethod ...
- C# 利用HttpWebRequest模拟登陆获取数据设置Accept-Encoding为gzip,deflate后返回的网页是乱码处理
原由:在解决模拟登陆抓取数据的时候post一个地址时老是获取的内容是乱码. 经过检查最终应该是编码是HttpWebRequest.Headers.Add("Accept-Encoding&q ...
- 程序解码错误:Accept-Encoding“: “gzip, deflate, br
请求头设置 "Accept-Encoding": "gzip, deflate, br" 返回的数据是乱码,无论设置utf-8.gbk.gb2312都无法解码 ...
- [转]android之Apache Http——向服务器发送请求的同时发送参数
android之Apache Http--向服务器发送请求的同时发送参数 使用Get方法提交: 其他步骤与上一节的操作相符,只是在传送地址的时候发送参数的格式如下: //Sname和Sage是实际的数 ...
- Android 图片下载或上传时请求失败。
项目场景: Android开发时使用OkHttp等相关网络框架与后端完成网络通信,完成上传或下载图片功能. Bug1: 通过Intent获取图片,并使用OkHttp将其传输到后端,发现后端未收到Htt ...
- gzip,deflate,zlib辨析
deflate(RFC1951):一种压缩算法,使用LZ77和哈弗曼进行编码: zlib(RFC1950):一种格式,是对deflate进行了简单的封装,他也是一个实现库(delphi中有zlib,z ...
最新文章
- CVPR2020 | 为尾部样本构造特征云,就像用电子云填充空旷的原子——长尾数据上的特征学习方法...
- 入门HTML的回顾,小总结
- Oracle根据已有表的数据建立新表
- IBM AIX服务器分区之间迁移IO设备以迁移HBA卡为例
- docker build -t_在Docker环境构建、打包和运行Spring Boot应用
- 石子合并(洛谷-P1880)
- java jdbc 占位符_java-jdbc
- php 字节码查看,PHP字节码缓存和内置服务器
- C语言之生成汇编代码(十)
- 桌面计算机怎么覆盖文件,恢复被覆盖的文件_恢复被覆盖的桌面文件
- 用 grldr 引导WinXP/Ubuntu双系统
- SharedCache-共享缓存概况和初步运用实例(1)
- Java性能优化的35种方法
- 图吧工具箱 硬件检测工具集合 2020.05 最新版,集成了常用的硬件检测与系统维护等工具
- 计算机PS怎么做地图怎么改色,ps颜色快捷键,ps调整颜色模式和替换改色
- matlab 仿真步长,matlab 仿真步长设置
- day1 开始blog打卡之路
- Python2.x和Python3.x版本的区别
- 说说 褥羊毛和薅羊毛的那些事
- 在Ubuntu/Linux环境下开放3306端口