Http gzip 处理
java实现html网页的gzip解压
在对网页抓包中发现,返回的很多网页是经过压缩的,比如访问谷歌首页,返回的头文件中包含Content-Encoding gzip
使用gzip可以省下很多网页流量,在网速一定的情况下,可以提高访问效率,我们用java访问时如何可以得到gzip的返回,并且我们如何解析返回的gzip呢?
我们以访问http://www.baidu.com/为例
我们用URL的openStream方法直接访问时并不返回gzip压缩数据,这是因为时候返回gzip需要判断浏览器是否支持gzip压缩,所以我们请求数据的时候在http请求头中添加支持gzip的请求头就可以
添加conn.setRequestProperty(“Accept-Encoding”, “gzip,deflate”);就告诉服务器你的浏览器支持gzip解压了
URL url = new URL(“http://www.baidu.com/”);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty(“Accept-Encoding”, “gzip,deflate”);
conn.connect();
InputStream in = conn.getInputStream();
BufferedReader bin = new BufferedReader(new InputStreamReader(in, “GB2312”));
String s = null;
while((s=bin.readLine())!=null){
System.out.println(s);
}
bin.close();
没有conn.setRequestProperty(“Accept-Encoding”, “gzip,deflate”);不会出现乱码
加上conn.setRequestProperty(“Accept-Encoding”, “gzip,deflate”);就是乱码,这事因为服务器对返回内容进行了gzip压缩的缘故,我们只要判断返回头是否包含Content-Encoding gzip,就可以判断是不是压缩过的数据,对待压缩后的数据我们只需进行gzip解压就好了
只需将上面的代码加上
GZIPInputStream gzin = new GZIPInputStream(in);
并将
BufferedReader bin = new BufferedReader(new InputStreamReader(in, “utf-8”));
改为
BufferedReader bin = new BufferedReader(new InputStreamReader(gzin, “utf-8”));
当然是否需要gzip解压,只判断返回数据头是否包含Content-Encoding gzip就可以了
Http gzip 处理相关推荐
- tar 和gzip 的区别
首先要 弄清两个概念:打包和压缩. 打包是指将一大堆文件或目录什么的变成一个总的文件, 压缩则是将一个大的文件通过一些压缩算法变成一个小文件. 为什么要区分这两个概念呢?其实这源于Linux中的很多压 ...
- php gzipstream,c# – 在WebRequest中发送gzip数据?
我有大量的数据(〜100k),我的C#应用程序发送到我的Apache服务器,安装了mod_gzip.我试图使用System.IO.Compression.GZipStream gzip数据. PH ...
- 利用python中的gzip模块压缩和解压数据流和文件
直接给出源码实现, 分为两种情况: 1.网络连接中的数据流的压缩和解压,或是打开的文件读取一部分 2.打开文件压缩或是解压 #!/usr/bin/env python #encoding: utf-8 ...
- 启用IIS的Gzip压缩 【转】
现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传 输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的 ...
- 使Apache实现gzip压缩
众所周知,在HTTP1.1中支持gzip压缩,这样可以缩小页面的容量从而加快页面的显示速度.可以使用常用HTTP抓包工具来检测一下你的站点是否开始了gzip压缩. Apache默认的http.conf ...
- tar、gzip、gunzip、bzip2、zip、unzip
tar [参数] 文件或目录名 •参数: -c: 建立新的备份档文件. -f: 对普通文件进行操作.这个参数通常是必选的. -r: 向备份档文件追加文件. -x: 从备 ...
- Node.js服务器启用Gzip压缩
Gzip是什么 复制大神们的解释吧: GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZ ...
- linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2
命令名称:gzip 功能:压缩文件 命令所在路径:/bin/gzip 用法:gzip 文件 压缩后文件格式:.gz 其他: 压缩后不保留原文件: 只能压缩文件,不能压缩目录 命令名称:gunzip 功 ...
- WordPress 开启 Gzip 为网页加载提速减少响应时间
2019独角兽企业重金招聘Python工程师标准>>> 大家都晓得,开启Gzip能极大地压缩文本数据的体积.对于使用 WordPress 的博主来说,开启服务器的GZip压缩是一个为 ...
- gzip格式分析与识别
" 介绍gzip格式,识别gzip压缩的数据流量." 在协议分析过程中,经常会发现gzip压缩的数据,例如在HTTP协议中,在HTTP头中会标示,内容编码为gzip.DEFLATE ...
最新文章
- linux教程 nfs,[原创]linux视频教程之NFS
- android .so文件详解以及兼容性
- 软件开发中的一些感想
- Spring Boot-@Configuration注解
- 每天一道LeetCode-----删除序列中指定元素,将满足要求的元素移动到前面
- [react] react中你用过哪些第三方的中间件
- MATLAB 求曲线长度
- 数据结构--链表--单链表归并排序mergesort
- 蒙特卡洛方法_【每日一题56】蒙特卡洛方法 用试验所得的频率估计事件发生概率...
- define特殊用法
- digester java_commons-digester 升级到 commons-digester3 的坑
- Windows XP SP3英文版镜像
- (转)sonicstage 完整删除的方法
- Skipped ‘XXX.txt‘ -- Node remains in conflict 问题解决
- 从空城计到阿尔法狗,博弈论如何渗透我们的生活?
- C的指针疑惑:C和指针17(经典抽象数据类型)
- Leetcode838: 推多米诺(medium)
- win7 任务栏 通知区域
- 计算机数据压缩说课,第3章多媒体数据压缩.ppt
- 如何迁移操作系统到ssd固态硬盘?