我正在尝试使用请求包编写python脚本,以使用组织内托管的在线mongodb查询服务API。 API期望授权标题格式为&#;; websitename / username:Password'并使用基本身份验证base64编码。我尝试使用具有以下格式的授权标头的请求包创建GET请求:
import requests
headers = {'Authorization': 'Basic %s' % 'Base64encoded
websitename/username:Password string here'}
content_res = requests.get(get_url, headers = headers).json()
但我在这里得到一个解析错误,因为我认为请求包中标题的预期字符串是' username:password'这里而不是所需的格式,即' websitename / username:password'。
我是否有办法以服务所期望的格式使用base64编码的sting,即' websitename / username:password'在请求包中?
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
听起来我觉得您收到HTTP响应错误,因为您传递的授权标头值不是base64编码的。要更正此问题,您只需使用base64
python模块对字符串进行编码:
Python 2.7 https://docs.python.org/2/library/base64.html
Python 3.5 https://docs.python.org/3.5/library/base64.html
一个例子是这样的:
import base64
import requests
website = 'example.com'
username = 'root'
password = '1234'
auth_str = '%s/%s:%s' % (website, username, password)
b64_auth_str = base64.b64encode(auth_str)
headers = {'Authorization': 'Basic %s' % b64_auth_str}
content_res = requests.get(get_url, headers=headers).json()
答案 1 :(得分:0)
import base64
import requests
website = 'example.com'
username = 'root'
password = '1234'
auth_str = '%s/%s:%s' % (website, username, password)
b64_auth_str = base64.b64encode(auth_str.encode('ascii'))
headers = {'Authorization': 'Basic %s' % b64_auth_str}
content_res = requests.get(get_url, headers=headers).json()