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

仅持私钥时如何用Python调用Inventory API GET请求及报错排查

如何正确调用Public Inventory API获取库存数据?

看起来你在调用API的时候踩了几个常见的坑,我来帮你一步步解决:

先分析你当前代码的核心问题

  • 用错了API地址:你写的https://www.mjplatform.com/catalog是主站的网页地址,不是文档里指定的API网关地址。文档里的Base URL是https://partner-gateway.staging.mjplatform.com/v1,所以正确的接口地址应该是这个Base URL加上/catalog,也就是https://partner-gateway.staging.mjplatform.com/v1/catalog。这也是为什么你拿到HTML内容的主要原因——你访问的是网页,不是API接口。
  • API密钥传递方式错误:你把密钥放在PARAMS里,还用URL当键,这完全不符合API认证的逻辑。这类API通常会通过请求头传递密钥,而不是查询参数。
  • 没有指定响应格式:你没有告诉服务器你要JSON格式的响应,所以服务器默认返回了网页内容,导致JSON解析失败,同时因为请求没有带浏览器相关的头信息,服务器还返回了"浏览器过时"的提示。

修正后的完整代码

import requests

# 正确的API接口地址:Base URL + /catalog
API_URL = "https://partner-gateway.staging.mjplatform.com/v1/catalog"
# 你的API密钥
API_KEY = "123abc"

# 配置请求头:传递API密钥,同时明确要求JSON响应
request_headers = {
    # 大部分API会用X-API-Key传递密钥,如果这个不行,试试Authorization: Bearer {API_KEY}
    "X-API-Key": API_KEY,
    "Accept": "application/json"
}

# 可选:根据需要添加过滤参数,比如获取可在线销售的重量型商品
filter_params = {
    "available_online": True,
    "uom_type": "weight"
}

try:
    # 发送GET请求
    response = requests.get(url=API_URL, headers=request_headers, params=filter_params)
    # 检查请求是否成功(状态码200-299),否则抛出异常
    response.raise_for_status()
    # 解析JSON响应
    inventory_data = response.json()
    print("成功获取库存数据:", inventory_data)
except requests.exceptions.HTTPError as http_err:
    print(f"HTTP请求错误:{http_err}")
except requests.exceptions.ConnectionError as conn_err:
    print(f"网络连接错误:{conn_err}")
except ValueError as json_err:
    print(f"JSON解析失败,服务器返回内容:\n{response.text}")

关键细节说明

  • URL修正:一定要使用文档里提供的partner-gateway.staging域名的API地址,主站地址不提供API服务,只会返回网页。
  • 密钥传递:如果X-API-Key头不生效,建议查看文档里的认证部分(你提到无法完整粘贴文档),试试Authorization: Bearer {API_KEY}这种格式——很多API会用Bearer token来认证。
  • 请求头的作用:Accept: application/json告诉服务器我们需要JSON格式的响应,避免返回网页;同时添加这个头也会让服务器把你的请求识别为API调用,而不是普通浏览器访问。
  • 参数过滤:filter_params字典里的键要和文档里的参数名完全一致,值的类型要符合要求(比如category_id传整数,available_online传布尔值True/False)。

关于"浏览器过时"提示的疑问

你用Python请求却收到这个提示,是因为之前访问的是主站的网页URL,服务器检测到你的请求没有携带标准浏览器的User-Agent头,所以判定你的"浏览器"过时,返回了网页提示。现在换成正确的API网关地址,并设置了Accept头后,服务器就会返回API数据,不会再出现这个问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:49:46