Gzip也是android客户端支持的方式,官网解释:GZIPInputStream此类类是用来读取在GZIP格式存储的数据,从底层的流进它的缓冲区读取和解压GZIP数据。
InputStream is = ...
GZIPInputStream zis = new GZIPInputStream(new BufferedInputStream(is));
try {
// Reading from 'zis' gets you the uncompressed bytes...
processStream(zis);
} finally {
zis.close();
}
1, 工具类:测试客户端是否支持GZIP编码压缩方式 & 获得支持GZIP的PrintWriter对象
package freebsd;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Utilities {
/*
* 测试客户端浏览器是否支持gzip的编码方式
*/
public static boolean isSurpported(HttpServletRequest request)
{
String encodingString = request.getHeader("Accept-Encoding");
return (encodingString!=null) && (encodingString.indexOf("gzip")!=-1);
}
/*
* 取得一个压缩的PrintWriter
*/
public static PrintWriter getWriter(HttpServletResponse response) throws IOException
{
ServletOutputStream sos = response.getOutputStream();
GZIPOutputStream gzipos = new GZIPOutputStream(sos);
return new PrintWriter(gzipos);
}
}
2,Servlet类,产生一个长字符串,然后在html页面中请求该servlet:
import freebsd.*;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ServletGzip
*/
public class ServletGzip extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletGzip() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setStatus(response.SC_OK);
PrintWriter out;
if(Utilities.isSurpported(request))
{
out = Utilities.getWriter(response);
//协议: 通知客户端使用gzip这种压缩方式而不是其它的,如compress
response.setHeader("Content-Encoding", "gzip");
}else {
out = response.getWriter();
}
StringBuilder sBuilder = new StringBuilder();
for(int i=0; i!=5000; ++i)
{
sBuilder.append("Printing the long string... ...!");
}
out.println(sBuilder);
out.close();
}
}
分享到:
相关推荐
第一个软件,传输流/文件的压缩,利用Internet中惯常使用的gzip, deflate算法,可以和sun java的GZipInputStream和GZipOutputStream互操作 第二个软件,基于HTTP的压缩传输软件,可完全和IE的VBScript和...
当使用jdk中GZIPInputStream读取.gz文件时,有时还未到文件结尾,则也会返回-1,该工具类解决了此bug
Android端可以对字符串进行压缩,我们在进行大量简单文本传输时,可以先压缩字符串再发送。接收端接收后再解压。也可以将字符串压缩后存入数据库中,下面话不多说了,来一起看看详细的介绍吧。 使用到的类库 ...
功能:解压或压缩zip格式的文件,里面附带...生成一个GZipInputStream流,用来打开压缩文件, 因为GZipInputStream由Stream派生,所以它可以赋给Stream。 它的构造函数的参数是一个表示要解压的压缩文件所代表的文件流
使用java GZIPInputStream可读取,做来电归属地软件的开发可以用
类似于安卓GZIPInputStream
使用java GZIPInputStream可以读取,做来电显归属软件可以用
1688个autojs的js文件源码,从简单到复杂,应有尽有,有兴趣的可以下载了认真学习,能提供不少思路
GZipInputStream gzi = new GZipInputStream(response.ResponseStream); MemoryStream ms = new MemoryStream(); int count=0; byte[] uncompress =new byte[1024]; while ((count = gzi.Read(uncompress, 0, ...
GZIPInputStream This filter stream is used to decompress a "GZIP" format stream. GZIPOutputStream This filter stream is used to compress a stream into a "GZIP" stream. Inflater Inflater is used to ...