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

Python Requests GET请求带Bearer Token访问API遇401未授权问题求助

排查401未授权错误的可能原因及解决方法

1. 自定义AuthBase类的潜在冲突

你当前通过自定义BearerAuth类添加Authorization头,但requests的auth参数主要针对HTTP基本认证、摘要认证这类标准场景,自定义AuthBase类可能出现隐性的头信息覆盖或处理冲突。更稳妥的方式是直接在请求头中携带Bearer Token——这也是你在线工具能成功的核心逻辑。

修改代码如下:

def Pods_Assets(token):
    url = "https://api.aqmeshdata.net/api/Pods/Assets_V1"

    # 直接在headers中配置Bearer Token
    headers = {
        "Accept": "application/json",
        "Authorization": f"Bearer {token}"
    }
    
    # 发起请求,无需使用auth参数
    response = requests.get(url, headers=headers)
    
    # 打印实际发送的请求头,用于排查差异
    print("实际请求头:", response.request.headers)
    
    if response.status_code == 200:
        json_response = response.json()
        print('Successfully retrieve data: [site_details]')
        print('Response time:', response.elapsed.total_seconds(), 'seconds', '\n')
        return json_response
    else:
        print("Error:", response.status_code, response.text)

2. Token格式有效性检查

  • 确认传入的token没有前后多余的空格、换行符或特殊字符(比如复制时误带的空白)
  • 打印token的值,确保和在线工具中使用的完全一致,排除拼写错误或Token过期问题

3. 对比请求头差异

通过打印response.request.headers,把代码发送的请求头和在线工具的原始请求头做对比:

GET /api/Pods/Assets_V1 HTTP/1.1
Authorization: Bearer xxxxx
Host: api.aqmeshdata.net
Accept: application/json

重点核对Authorization字段的格式(标准格式是Bearer 加一个空格后接Token,服务器通常兼容多空格的情况,但需保证Token本身无异常)。

4. 接口路径权限验证

供应商示例中的接口路径是/api/Pods/Assets,你使用的是Assets_V1。虽然你提到在线工具用Assets_V1能成功,但建议再次确认当前Token的权限是否匹配该版本接口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:41:15