2019独角兽企业重金招聘Python工程师标准>>>
1.对Java后端的请求HttpURLConnection对象中的消息头设置压缩
connection.setRequestProperty("Accept-Encoding", "gzip, deflate");
2.发送请求后获取response中的content-encoding
connection.getContentEncoding(); // 获取content-encoding
3.如果content-encoding == gzip,则将获取到的字节流转为字节数组(压缩),然后再将字节数组解压
public static byte[] uncompresss(byte[] bytes) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
GZIPInputStream gzip = new GZIPInputStream(in);
byte[] buffer = new byte[1024];
int n;
while((n = gzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
return out.toByteArray();
}
gzip压缩字符串为字节数组
/**
* 将字符串进行gzip压缩,输出压缩后的字节数组
*/
public static byte[] compress(String str, String encoding) throws Exception {
if (str == null || str.length() == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip;
gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes(encoding));
gzip.close();
return out.toByteArray();
}