当前位置: 首页 > article >正文

JAVA HTTP压缩数据

/**
     * 压缩数据包
     *
     * @param code
     * @param data
     * @param resp
     * @throws IOException
     */
    protected void writeZipResult(int code, Object data, HttpServletResponse resp) throws IOException {
        resp.setHeader("Content-Encoding", "gzip");
        // write到客户端
        resp.setContentType("application/json;charset=utf-8");
        ApiResult ret = new ApiResult();
        ret.setData(data);
        ret.setCode(code);
        byte[] compressedData = null;
        ByteArrayOutputStream baos = null;
        GZIPOutputStream gzos = null;
        byte[] bytes = null;
        try {
            baos = new ByteArrayOutputStream();
            gzos = new GZIPOutputStream(baos);
            bytes = JSON.toJSONString(ret).getBytes(StandardCharsets.UTF_8);
            gzos.write(bytes);
            gzos.finish();
            compressedData = baos.toByteArray();
            logger.info("Original data len:{} after compression len:{} compression rate:{}", bytes.length, compressedData.length, compressedData.length * 1.0 * 100 / bytes.length);
        } catch (Exception e) {
            logger.error("Compressed data is abnormal", e);
        } finally {
            if (gzos != null) {
                gzos.close();
            }
            if (baos != null) {
                baos.close();
            }
        }
        if (compressedData != null) {
            // 设置Content-Length
            resp.setContentLength(compressedData.length);
            resp.getOutputStream().write(compressedData);
            resp.getOutputStream().flush();
        }
    }

压缩结果能达到 90%以上
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/450430.html

相关文章:

  • ubuntu 网络管理
  • linux-19 根文件系统(一)
  • LLMs之PDF:MinerU(将PDF文件转换成Markdown和JSON格式)的简介、安装和使用方法、案例应用之详细攻略
  • 使用Vue+Django开发的旅游路书应用
  • python round四舍五入和decimal库精确四舍五入
  • STM32F407寄存器点灯
  • 理想很丰满的Ollama-OCR
  • WebSocket | 背景 概念 原理 使用 优缺点及适用场景
  • 单片机:实现动态显示七段数码管(附带源码)
  • ZCC2116TSL 1µA超低静态电流同步升压变换器 替代TLV61070
  • 【优选算法】Pointer-Slice:双指针的算法切片(下)
  • pdf转换文本:基于python的tesseract
  • 微软致力于将非 OpenAI 模型添加到 365 Copilot 产品中
  • 使用strimzi-kafka-operator 的mirrormake2(mm2)迁移kafka集群,去掉目标集群的topic默认前缀
  • 基于java博网即时通讯软件的设计与实现【源码+文档+部署讲解】
  • 停车管理系统:构建安全、便捷的停车环境
  • 人工智能的未来:重塑世界的技术革命之旅
  • 2024年12月24日Github流行趋势
  • MySQL字符串截取函数
  • 计算机网络•自顶向下方法:计算机网络和因特网
  • 【RabbitMQ】【Laravel】【PHP】Laravel 中使用 RabbitMQ
  • 理解神经网络
  • nestjs:GET REQUEST 缓存问题
  • 频繁拿下定点,华玉高性能中间件迈入商业化新阶段
  • Vue.js前端框架教程12:Vue表单验证rules和form.validate
  • 02、Spring AOP