You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理API响应消息体中的GZIP字符串?

解决GZIP字符串解压的问题

你的问题核心在于:返回的字符串不是直接的GZIP二进制字节的字符串形式,而是**gzip:前缀+Base64编码的GZIP二进制数据**。直接调用compressedString.getBytes()得到的是Base64文本的字节,并非GZIP的原始二进制数据,所以GZIPInputStream无法识别格式。

正确处理步骤:

  • 先剥离开头的gzip:前缀
  • 对剩余字符串进行Base64解码,得到真正的GZIP二进制字节数组
  • 再用GZIPInputStream解压

Java代码示例

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.zip.GZIPInputStream;

public class GzipStringDecoder {
    public static String decodeGzipString(String compressedString) throws IOException {
        // 1. 移除gzip:前缀
        String base64Gzip = compressedString.replaceFirst("^gzip:", "");
        
        // 2. Base64解码获取GZIP二进制字节
        byte[] gzipBytes = Base64.getDecoder().decode(base64Gzip);
        
        // 3. 解压GZIP数据
        try (GZIPInputStream gzipInput = new GZIPInputStream(new ByteArrayInputStream(gzipBytes));
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
            
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = gzipInput.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            return outputStream.toString("UTF-8"); // 根据实际编码调整
        }
    }

    public static void main(String[] args) throws IOException {
        String sample = "gzip:H4sIAAAAAAAAALS9665wyXEd9i7zm21U37vnVwwZAREEAZJYgBEjMKq6uiVLNimQlBDRyLtnrX3GD+ACIlEDznyaffbpXV21Vl1W/bdf/vKv/3R/+fWXf/4n17/cX373y/l7/cPfXf+3f/nl1zxWrmW2Vfeev/vlL/p3f/7l1//4f//uF7vvj3+6f/unP/zy63/75T/9p//+CPz97375F/0v//zb3/2q/1X/+sc...";
        String result = decodeGzipString(sample);
        System.out.println(result);
    }
}

注意事项

  • 若使用Java 8之前的版本,需依赖第三方库(如Apache Commons Codec的org.apache.commons.codec.binary.Base64)完成Base64解码
  • 解压后的字符串编码要与原始压缩时的编码一致,示例中使用UTF-8,可根据实际场景调整

内容的提问来源于stack exchange,提问作者SW Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:07:16