`
sdutdazzling
  • 浏览: 31353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android客户端使用网络数据压缩 GZIPInputStream

 
阅读更多

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();  
}  
}  
 
分享到:
评论

相关推荐

    GZip流压缩&Web流压缩组件

     第一个软件,传输流/文件的压缩,利用Internet中惯常使用的gzip, deflate算法,可以和sun java的GZipInputStream和GZipOutputStream互操作  第二个软件,基于HTTP的压缩传输软件,可完全和IE的VBScript和...

    重写GZIPInputStream中相应方法MultiMemberGZIPInputStream

    当使用jdk中GZIPInputStream读取.gz文件时,有时还未到文件结尾,则也会返回-1,该工具类解决了此bug

    Android实现压缩字符串的方法示例

    Android端可以对字符串进行压缩,我们在进行大量简单文本传输时,可以先压缩字符串再发送。接收端接收后再解压。也可以将字符串压缩后存入数据库中,下面话不多说了,来一起看看详细的介绍吧。 使用到的类库 ...

    C#压缩与解压代码

    功能:解压或压缩zip格式的文件,里面附带...生成一个GZipInputStream流,用来打开压缩文件, 因为GZipInputStream由Stream派生,所以它可以赋给Stream。 它的构造函数的参数是一个表示要解压的压缩文件所代表的文件流

    归属地数据

    使用java GZIPInputStream可读取,做来电归属地软件的开发可以用

    OC GZIP解压/压缩ISO-8859-1编码格式

    类似于安卓GZIPInputStream

    归属地数据库

    使用java GZIPInputStream可以读取,做来电显归属软件可以用

    autojsdemo.zip

    1688个autojs的js文件源码,从简单到复杂,应有尽有,有兴趣的可以下载了认真学习,能提供不少思路

    sharp zipsharp zip

    GZipInputStream gzi = new GZipInputStream(response.ResponseStream); MemoryStream ms = new MemoryStream(); int count=0; byte[] uncompress =new byte[1024]; while ((count = gzi.Read(uncompress, 0, ...

    zipme包---j2me的zip

    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 ...

Global site tag (gtag.js) - Google Analytics