使用GZIP压缩接口的报文,达到节省流量的目的。

来源:互联网 发布:djvu for mac 编辑:程序博客网 时间:2024/06/01 18:12

GzipUtil 压缩和加压工具

/** * 压缩字符串 * @param str * @param charest * @return * @throws IOException * @throws UnsupportedEncodingException */public static byte[] compress(String str,String charset) throws IOException, UnsupportedEncodingException {Assert.notNull(str, " null compress error ");ByteArrayOutputStream out = new ByteArrayOutputStream();GZIPOutputStream gzip = new GZIPOutputStream(out);try{gzip.write(str.getBytes(charset));gzip.close();return  out.toByteArray();}catch(Exception e){throw new IOException(e);}finally{FileUtil.close(gzip);FileUtil.close(out);}}

/** * 解压缩字符串 * @param str * @param charest * @return * @throws IOException * @throws UnsupportedEncodingException * @throws FileNotFoundException */public static byte[] uncompress(InputStream in)throws IOException, UnsupportedEncodingException,FileNotFoundException {ByteArrayOutputStream out = new ByteArrayOutputStream();GZIPInputStream gunzip = new GZIPInputStream(in);try{byte[] buffer = new byte[256];int n;while ((n = gunzip.read(buffer)) >= 0) {out.write(buffer, 0, n);}return out.toByteArray();}catch(Exception e){throw new IOException(e);}finally{FileUtil.close(out);FileUtil.close(gunzip);FileUtil.close(in);}}
controller压缩数据后 使用HttpServletResponse response 输出数据

byte[] _byte=GzipUtil.compress(json,"UTF-8");response.getOutputStream().write(_byte);response.getOutputStream().flush();response.getOutputStream().close();


0 0
原创粉丝点击