Python调用Uni Stats API发送GET请求返回401错误的求助
解决Uni Stats API请求返回401未授权的问题
你遇到的这个问题其实很常见:Postman能正常请求,但用requests库直接把token塞在URL里就返回401。这是因为Postman会自动识别URL中的API_TOKEN@格式,将其转换为Basic Auth的请求头,但requests库默认不会做这个自动转换,所以得我们手动处理认证信息。
下面给你两种可行的解决方案:
方法一:使用requests的auth参数(推荐)
这个方法最简洁,requests会帮你自动处理Basic Auth的编码逻辑:
import requests # 注意这里要去掉URL里的API_TOKEN@部分 url = 'https://data.unistats.ac.uk/api/v4/KIS/Institution/10007856.json' # 把你的实际API_TOKEN替换掉这里的字符串,密码部分留空(符合Uni Stats API的认证规则) response = requests.get(url, auth=('你的实际API_TOKEN', '')) # 现在可以正常获取JSON数据了 print(response.json())
方法二:手动构造Authorization请求头
如果你想更清晰地控制请求头细节,可以手动生成Basic Auth的认证字符串:
import requests import base64 url = 'https://data.unistats.ac.uk/api/v4/KIS/Institution/10007856.json' # 构造认证字符串:API_TOKEN + 冒号(密码为空) auth_string = f"你的实际API_TOKEN:" # 进行base64编码 base64_auth = base64.b64encode(auth_string.encode('utf-8')).decode('utf-8') # 构造请求头 headers = { 'Authorization': f'Basic {base64_auth}' } response = requests.get(url, headers=headers) print(response.json())
额外排查提示
如果还是有问题,可以先打印response.text看看API返回的具体错误信息,方便进一步排查:
print(response.text)
内容的提问来源于stack exchange,提问作者Ali Raza
相关产品推荐
相关产品推荐

