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
相关产品推荐
相关产品推荐

