我原来写过一篇关于 gzip压缩与解析文章:Swift - 使用gzip压缩NSData数据(附:请求时将JSON数据进行压缩)。当时客户端是 iOS平台,而服务端使用的 PHP。
样例中客户端先将 json数据通过 gzip压缩后发送给服务端。服务端收到数据后先解压缩,再解析数据。最后将解析的数据又返回给客户端。客户端把返回的数据打印出来(如下图)。数据等正确输出说明整个压缩解压的流程是没问题的。
有网友问了,如果我的服务端是用 JAVA写的,该怎么办。本文我就介绍下 JAVA如何解压 gzip数据。
一、创建处理gzip的过滤器
要实现 gzip解压,我们先要创建个过滤器(servlet Filter),用来对所有的 request请求进行处理。这样不管我们服务端使用哪种web框架都可以很好地适配。
1,GzipRequestWrapper.java
继承自 HttpServletRequestWrapper,其作用就是判断这个 request的内容是否使用 gzip压缩了。如果是压缩的,则对其进行解压。
package filter;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;</