使用Bol.com API V9导出报价文件失败求助(Python实现)
Bol.com API V9报价导出400错误解决
问题
尝试通过Python代码调用Bol.com API V9导出全部报价文件,但请求返回400状态码失败。代码如下:
headers = { 'Accept': 'application/vnd.retailer.V9+json', "Content-Type": 'application/vnd.retailer.V9+json', "Authorization": "Bearer " + f"{access_token}" } params = { "format": "CSV", } url = "https://api.bol.com/retailer/offers/export" response = requests.post(url, headers=headers, params=params)
返回的错误信息:
Status-Code: 400
{
"type" : "https://api.bol.com/problems",
"title" : "Bad Request",
"status" : 400,
"detail" : "The supplied accept header media type is not supported.",
"host" : "Instance-106",
"instance" : "https://api.bol.com/retailer/offers/export?format=CSV"
}
原以为设置的Accept头符合官方文档要求,请问是哪里遗漏了,还是API存在问题?
解决方法
问题出在Accept请求头的媒体类型不匹配:当你指定导出格式为CSV时,Accept头需要对应CSV的媒体类型,而非JSON格式。
Bol.com报价导出API针对CSV格式的请求,Accept头应设为text/csv,Content-Type可保留application/vnd.retailer.V9+json(若请求体为空,也可省略该字段,但按规范保留不影响)。
修改后的代码:
headers = { 'Accept': 'text/csv', # 替换为CSV对应的媒体类型 "Content-Type": 'application/vnd.retailer.V9+json', "Authorization": "Bearer " + f"{access_token}" } params = { "format": "CSV", } url = "https://api.bol.com/retailer/offers/export" response = requests.post(url, headers=headers, params=params)
额外提示:该API的导出为异步任务,返回的响应会包含导出任务的查询链接,需后续轮询该链接获取最终的CSV文件,而非直接返回文件内容。
内容的提问来源于stack exchange,提问作者SeRo
相关产品推荐
相关产品推荐

