为何Amazon Advertising报告API返回.bin格式而非预期的.json?
亚马逊 Sponsored Product 报告返回二进制内容解决方案
核心原因
你收到的二进制内容是gzip压缩后的报告数据流,亚马逊广告API为降低传输带宽占用,默认会对生成完成的报告做gzip压缩,因此不会直接返回明文JSON。
解决方法
方案1:Postman请求直接配置
- 打开拉取报告的GET请求的
Headers配置页,添加请求头:Accept-Encoding: gzip - Postman默认支持自动识别并解压gzip格式响应,重新发送请求即可直接获取明文JSON内容。
方案2:代码逻辑手动处理
如果是自行封装API请求代码,可按对应编程语言做解压处理:
Python示例
requests库默认会自动处理gzip响应,无需额外配置;若使用基础请求库可手动解码:
import gzip import json # response为GET请求返回的响应对象 decompressed_content = gzip.decompress(response.content) report_json = json.loads(decompressed_content.decode("utf-8"))
Java示例
用GZIPInputStream包装响应流后读取:
import java.util.zip.GZIPInputStream; import java.nio.charset.StandardCharsets; import java.io.BufferedReader; import java.io.InputStreamReader; // 假设response为请求返回的响应对象 GZIPInputStream gzipStream = new GZIPInputStream(response.getEntity().getContent()); BufferedReader reader = new BufferedReader(new InputStreamReader(gzipStream, StandardCharsets.UTF_8)); // 逐行读取reader即可得到明文JSON内容
前置校验项
如果配置后仍未得到正常JSON,优先检查两个前提:
- 确保报告已经生成完成:调用
GET /reports/{reportId}接口查看status字段,仅当状态为COMPLETED时拉取的报告才有效 - 确保请求路径正确:拉取报告文档的接口路径为
GET /reports/{reportId}/document,不要遗漏末尾的/document路径
内容的提问来源于stack exchange,提问作者JaredGibb
相关产品推荐
相关产品推荐

