`

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, "GB2312"));
改为
BufferedReader bin = new BufferedReader(new InputStreamReader(gzin, "GB2312"));
 

当然是否需要gzip解压,只判断返回数据头是否包含Content-Encoding gzip就可以了

转自:http://www.codeif.com/topic/446

 

分享到:
评论

相关推荐

    pako gzip 压缩和解压缩(支持中文)

    gzip是一种广泛使用的文件压缩格式,它基于deflate算法,并添加了额外的头部和尾部信息,以便于识别和解压。在JavaScript中,使用pako库进行gzip压缩和解压缩非常简单: 1. **压缩**:使用`pako.gzip()`方法,将未...

    java源码包---java 源码 大量 实例

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    JAVA GZIP压缩案例附带httpwatch监测工具以及使用说明

    在本文中,我们将深入探讨Java中的GZIP压缩技术,并结合HTTPWatch监测工具,理解其在实际网络请求中的应用。GZIP是一种广泛使用的数据压缩格式,它可以在网络传输中有效地减小文件大小,从而提高加载速度,减少...

    java源码包3

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    java源码包2

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    java开启JBoss的HTTP GZIP压缩功能要提高网站访问速度_java生成压缩文件压缩率

    6. **性能影响**:虽然GZIP能显著提高网页加载速度,但也会增加服务器CPU的负载,因为压缩和解压都需要计算资源。因此,需要根据服务器的性能和网络环境来权衡是否开启此功能。 7. **浏览器兼容性**:大多数现代...

    java抓取网页源码gzip-phproxy:PHP中的代理

    Java的HttpURLConnection或HttpClient库可以自动处理GZIP解压,但有时需要手动配置。 ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

    java源码包4

     Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

    MLDN Java Web 开发实战经典源码李兴华源代码

    5. **过滤器与监听器**:Filter和Listener是Java Web中的两大组件,过滤器用于拦截和处理请求,实现如权限控制、GZIP压缩等功能;监听器则监控Web应用中的特定事件,如session创建、销毁等。 6. **Ajax与JavaScript...

    网络蜘蛛程序及java源码

    Java内置的Inflater类可以用来解压deflate编码的数据,而GZIPInputStream则用于处理gzip格式的压缩内容。 设置下载功能可能包括以下部分: 1. **URL管理**:爬虫需要一个URL队列来存储待抓取的网页链接,同时可能...

    前端pako压缩与解压缩

    Pako是一个高效的,开源的Gzip/Deflate库,它允许开发者在浏览器端进行数据压缩和解压缩,从而提高网页性能。 首先,我们需要了解什么是Gzip和Deflate。Gzip是一种广泛使用的数据压缩格式,而Deflate是Gzip内的压缩...

    J2EE gzip压缩

    2. **过滤器(Filter)**:在Java应用中,我们也可以通过实现Servlet Filter来动态控制gzip压缩。创建一个实现了`javax.servlet.Filter`接口的类,然后在`doFilter`方法中检测请求和响应是否需要进行gzip处理。这种...

    对chunked编码进行解码

    一个对chunked编码进行解码的例子,通过java socket实现发送http请求,对gzip压缩的消息体进行解码处理。

    Tomcat与Java.Web开发技术详解_tomcatjava_

    这种机制使得Java代码能够在服务器端动态生成HTML,从而实现动态网页。 **部署Web应用到Tomcat** 要将Java.Web应用部署到Tomcat,通常需要创建一个WAR(Web Application Archive)文件,该文件是一个包含了所有...

    tomcat8.0 解压版

    2. **JSP(JavaServer Pages)**:JSP是一种动态网页技术,允许将HTML代码与Java代码结合在一起,使得开发者可以在页面上嵌入Java代码以生成动态内容。 3. **配置文件**:Tomcat的配置主要通过`conf`目录下的文件...

    SAP Java JCo 3.1.3 Linux 平台 64bit

    开发者可以通过Java API调用JCo,实现与SAP R/3或NetWeaver系统进行数据交换,例如读取或写入BAPI(Business Application Programming Interface)函数模块。 SAP JCo支持异步和同步通信模式,使得应用程序能够在...

    1-1Z914195953_gzip_

    5. **在编程中的应用**:许多编程语言,如Python、Java和Node.js,都有库支持读写gzip压缩的数据,这在处理大文件或网络传输时非常有用。 6. **压缩级别**:gzip允许指定压缩级别(1-9),1为最快但压缩比最低,9为...

    开启TOMCAT6的GZIP压缩

    GZIP压缩的工作原理是在客户端请求网页后,由服务器端将网页文件压缩后再发送给客户端,客户端接收到压缩后的文件后,由浏览器进行解压并显示页面内容。这种方式不仅可以减少传输的数据量,而且还能对动态生成的内容...

Global site tag (gtag.js) - Google Analytics