2017-09-13 64 views
0

我正在尝试使用请求包编写一个使用组织内托管的在线mongodb查询服务API的python脚本。 API期望采用格式为“websitename/username:Password”的授权标头,并使用基本身份验证base64编码。我试图创建一个使用请求包,它具有以下格式的授权标头的GET请求:python中的请求包中的授权标头

import requests 

headers = {'Authorization': 'Basic %s' % 'Base64encoded 
websitename/username:Password string here'} 

content_res = requests.get(get_url, headers = headers).json() 

但我得到一个语法错误这里的字符串,因为我认为预期的字符串为标题请求包在这里是'用户名:密码'的形式,而不是所需的格式,即'websitename/username:password'。

有没有一种方法可以在服务期望的格式中使用base64编码的sting,即请求包中的'websitename/username:password'?

任何帮助,高度赞赏。

谢谢。

回答

1

这听起来像你得到一个HTTP响应错误,因为你传递的授权标题值不是base64编码。

的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() 
+0

感谢很多要纠正这一点,你可以使用base64 Python模块简单地编码字符串强尼!这解决了我正面临的问题:) – shripati007

+0

嗨Jonny,如果在auth_str字符串中使用斜杠反斜杠。我试过了,但它给出了一个错误'像对象的字节是必需的,而不是str'。您认为针对此问题的任何解决方法? – shripati007

相关问题