【问题标题】:Java AJAX server, how to zip JSON responsesJava AJAX 服务器,如何压缩 JSON 响应
【发布时间】: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

结果相同。

【问题讨论】:

    标签: java json http zip gzip


    【解决方案1】:

    如果您的服务器位于 apache 网络服务器后面,请打开 apache 膨胀命令

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 2015-04-02
      • 2013-11-02
      • 1970-01-01
      • 2011-01-29
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多