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

Python requests调用Wildberries API POST请求报400错误,如何设置参数?

问题:调用Wildberries库存API返回400错误(请求体不正确)

我用Python 3.10调用Wildberries平台的库存列表API,原代码如下:

import requests
url = 'https://suppliers-api.wildberries.ru/api/v3/stocks/{warehouse}'
key = 'my_key'
headers_auth = {'Authorization': key}
wh_id = my_id #int
auth = requests.post(url.format(warehouse = wh_id), headers = headers_auth)
print(auth)
leftovers = auth.json()
print(leftovers)

执行后得到响应:<Response [400]> {'code': 'IncorrectRequestBody', 'message': 'Некорректное тело запроса'},其中message翻译为“请求体不正确”。

我尝试过以下几种方式:

  • 将wh_id直接写入路径:
    url = 'https://suppliers-api.wildberries.ru/api/v3/stocks/wh_id'
    auth = requests.post(url, headers = headers_auth)
    
  • 在data中传入warehouse参数并调整URL:
    data = {'warehouse':wh_id}
    auth = requests.post(url, data = data, headers = headers_auth)
    
  • 按照请求体传入条码数组:
    barcodes = ['barcode']   
    data = {"skus": barcodes}
    auth = requests.post(url.format(warehouse = wh_id), data=data, headers = headers_auth)
    

根据Wildberries的API文档(已翻译为中文),该接口/api/v3/stocks/{warehouse}的warehouse是唯一必填路径参数,但文档未明确要求额外请求体数据,可我仍收到400错误,希望能获得200响应码,请问问题出在哪里?


问题分析与解决方案

核心原因

Wildberries的这个库存查询API实际上强制要求请求体为JSON格式,且必须包含skus字段——哪怕你不需要过滤特定SKU,也要传入空的skus数组。之前的尝试要么没传请求体,要么用了错误的请求体格式(data参数默认发送form-data,而非接口要求的application/json)。

修正后的代码

import requests

url = 'https://suppliers-api.wildberries.ru/api/v3/stocks/{warehouse}'
key = 'my_key'
headers_auth = {'Authorization': key}
wh_id = my_id  # 确保是int类型

# 必须传入JSON格式的请求体,空数组表示查询所有库存
payload = {"skus": []}
response = requests.post(url.format(warehouse=wh_id), json=payload, headers=headers_auth)

print(response.status_code)
leftovers = response.json()
print(leftovers)

对之前尝试的错误说明

  1. 直接写入wh_id到URL:未传入任何请求体,不符合接口强制要求的JSON请求体规则,返回400。
  2. 用data传warehouse参数:warehouse是路径参数,不是请求体参数,且data默认发送form-data格式,接口无法识别,返回400。
  3. 用data传skus数组:data参数默认发送form-data,而非接口要求的application/json格式,因此请求体被判定为无效。

补充文档说明(翻译自官方API文档)

该POST接口用于获取指定仓库的库存数据:

  • 路径参数warehouse:必填,仓库ID(整数类型)
  • 请求体:必须是包含skus字段的JSON对象,skus为字符串数组,用于过滤指定SKU的库存;若需查询全部库存,传入空数组即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:28:29