如何解决如何使用Python3.6.9 urllib3发送基本授权标头
我正在尝试发送API调用以从Questrade平台获取时间。这是他们指南中的示例请求
GET /v1/time HTTP/1.1
Host: https://api01.iq.questrade.com
Authorization: Bearer C3lTUKuNQrAAmSD/TPjuV/HI7aNrAwDp
我能够将其与请求模块一起使用
headers = {'Authorization': f'{token_type} {access_token}'}
print(headers) -> {'Authorization': 'Bearer -xSoUNCLYCrFjxxxxx_wAQVpi4olWrQs0'}
qt_time_obj = requests.get(api_server + 'v1/time',headers=headers)
qt_time = qt_time_obj.json()['time']
print(qt_time) -> 2020-10-13T17:06:32.388000-04:00
现在,我正在尝试使urllib3正常工作,但是没有运气
headers = {'Authorization': f'{token_type} {access_token}'}
url = api_server + 'v1/time'
http = urllib3.PoolManager()
qt_time_obj = http.urlopen('GET',url,headers)
print(qt_time_obj.status) -> 401
print(qt_time_obj.data) -> b'{"code":1014,"message":"Missing authorization header"}'
我也尝试了make_headers方法,但是它给了我同样的错误。
headers = urllib3.make_headers(basic_auth="Authorization: Bearer AdKt3YUl46_tGnZp7cRgTu4W2vtfBME50")
您能指出我做错了什么吗?谢谢!
解决方法
因此,经过一番尝试,我发现我需要使用http.request而不是http.open。我还需要执行“ headers = headers”,而不仅仅是方法中的“ headers”。
qt_time_obj = http.request('GET',url,headers=headers)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。