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

Swift中无法解压API返回的Brotli压缩数据求助

问题分析与解决方案

核心错误原因

你处理API返回数据的步骤错了:API给的"Cw2AeyJuYW1lIjoiaU9TRGV2IiwgImFnZSI6MzB9Aw=="是Base64编码后的Brotli压缩数据,但你直接用serverResponse.data(using: .utf8)转成Data,这得到的不是真正的压缩二进制数据,解压肯定失败。

修正后的代码

先把Base64字符串解码成原始压缩Data,再执行解压:

let serverResponse = "Cw2AeyJuYW1lIjoiaU9TRGV2IiwgImFnZSI6MzB9Aw=="
// 第一步:Base64解码拿到真实的压缩Data
guard let inputData = Data(base64Encoded: serverResponse) else {
    fatalError("无效的Base64字符串")
}

do {
    let decompressedData = try inputData.decompressed()
    print("Decompressed: \(String(describing: decompressedData))")
    let decompressedString = String(decoding: decompressedData, as: UTF8.self)
    print("Decompressed String -> \(decompressedString)")
} catch {
    fatalError("解压失败:\(error)")
}

为什么本地测试正常?

本地测试时,你是直接把字符串转成Data后压缩,得到的是原始压缩二进制数据,解压时直接用这个Data操作,流程没问题。但API返回的二进制数据会先经过Base64编码(避免HTTP传输二进制时出现乱码或丢失),所以必须先解码才能拿到正确的压缩Data。

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

相关产品推荐
方舟 Agent Plan

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

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