【发布时间】:2015-11-13 13:30:37
【问题描述】:
我有一个很大的响应,它是一个至少 88Kb 的 JSON 对象,我在客户端上接收此数据时遇到问题。
我想压缩 Java 应用程序中的内容并将压缩文件发回,我之前在服务器上使用 PHP 压缩大内容然后浏览器解压缩时已经这样做了。
目前 JSON 字符串是在 StringBuilder 对象中构建的。如果这个想法有缺陷,我还能做什么? JSON 对象包含大型系统的状态信息,我需要经常发送更新。
编辑...我已经解决了这个问题,如果 JSON 的大小 > 512 字节,那么我将 StringBuffer 传递给下面的函数:
public StringBuilder zipStringBuilder(StringBuilder sbSource) {
StringBuilder sbZipped = null;
try {
byte[] arybytSource = sbSource.toString().getBytes();
byte[] arybytBuffer = new byte[ZIP_BUFFER];
Deflater objDeflater = new Deflater();
objDeflater.setInput(arybytSource);
ByteArrayOutputStream baos = new ByteArrayOutputStream(arybytSource.length);
objDeflater.finish();
while( !objDeflater.finished() ) {
int intCount = objDeflater.deflate(arybytBuffer);
baos.write(arybytBuffer, 0, intCount);
}
baos.close();
sbZipped = new StringBuilder();
sbZipped.append(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}
return sbZipped;
}
HTTP 标头如下:
HTTP/1.0 200
Date: Fri Nov 13 14:47:06 GMT 2015
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT
Access-Control-Allow-Credentials: true
Keep-Alive: timeout=2, max=100
Cache-Control: no-cache
Pragma: no-cache
Content-Encoding: zip
Content-type: application/json;charset=utf-8
但是我没有收到或者浏览器不理解?
我也试过了:
Content-Encoding: gzip
结果相同。
【问题讨论】: