Java AJAX服务器,如何压缩JSON响应

时间:2015-11-13 13:30:38

标签: java json http zip gzip

我有一个大的响应,它是一个至少88Kb的JSON对象,我在客户端上接收这些数据时遇到问题。

我想在Java应用程序中压缩内容并发送回zip,之前我在服务器上使用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

同样的结果。

1 个答案:

答案 0 :(得分:0)

如果你的服务器在apache web服务器后面打开了 apache inflate命令