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

Python使用Token调用API遇403、400错误问题求助

问题诊断与解决方案

首次403错误根因

  • 未解析授权响应的实际令牌值:你直接将整个auth_response响应对象传入授权头,而非提取其中的access_token字段
  • 授权头前缀错误:OAuth2客户端凭证模式返回的令牌类型为Bearer,你错误使用了token作为前缀,不符合接口鉴权规则

后续400日期格式错误根因

requests库发送GET请求时,会自动对params中的参数值做URL编码,默认会把日期中的空格编码为+,而该API的后端服务仅识别空格编码为%20的格式,或者要求使用ISO8601标准的T作为日期时间分隔符,因此判定格式非法。

修复方案

可以选择以下任意一种方案修复:

方案1:使用ISO8601标准日期格式(兼容性最好)

将日期中的空格替换为T,符合绝大多数API的日期解析规则:

dateparams = {
    "StartDateTime": "2021-01-01T00:00:00", 
    "EndDateTime" : "2021-10-11T23:59:00"
}

方案2:手动编码日期参数,强制空格编码为%20

如果接口要求必须保留空格的语义,可手动处理编码避免默认的+转换:

from urllib.parse import quote

dateparams = {
    "StartDateTime": quote("2021-01-01 00:00:00", safe=''),
    "EndDateTime" : quote("2021-10-11 23:59:00", safe='')
}

额外优化建议

请求令牌后增加状态码校验,避免令牌获取失败后仍继续调用业务接口,同时可以直接用requests内置的json()方法解析响应,不需要手动导入json模块处理:

auth_response = requests.post(auth_url, data=data)
# 增加校验,令牌请求失败直接抛出异常
auth_response.raise_for_status()
authdata = auth_response.json()
token = authdata['access_token']

内容的提问来源于stack exchange,提问作者opperman.eric

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:54:04