转换curl命令到Python请求

问题描述:

curl命令,我有正常工作是 -转换curl命令到Python请求

curl -X GET -H "Authorization: Basic <base64userpass>" -H "Content-Type: application/json" "http://<host>/bamboo/rest/api/latest/result/<plankey>.json?expand=results.result&os_authType=basic" 

在Python中,这是我现在有 -

headers = {'Authorization': 'Basic <base64userpass>', 'Content-Type': 'application/json'} 
    datapoints = {'expand': 'results.result', 'os_authType': 'basic'} 
    url = "http://<host>/bamboo/rest/api/latest/result/<plankey>.json" 
    r = requests.get(url, headers=headers, data=datapoints) 

我得到的回应当使用Python请求是<Response [403]>,但是当使用curl时,我找回了预期的数据。

我在这里错过了什么?

感谢。

+0

你需要'params ='而不是'data =' – furas

您应该使用请求的auth选项来执行基本身份验证。 还有更多的标题为你curl命令行处理(除非你用auth请求将不会处理它们):

>>> from requests.auth import HTTPBasicAuth 
>>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass')) 

或者只是使用:

>>> requests.get('https://api.github.com/user', auth=('user', 'pass')) 

(更改URL和所有)。

另请注意,requests应该得到params=(而不是data=)。

+0

我唯一关心的是,我现在唯一的值是base64编码值(可以说是CmUnMm9dOkJGhaUIwBaMlNTYyJh =),而不是用户/传递,是否可以使用这种方法呢? – George

+0

你确定这是价值吗? – Dekel

+0

我刚刚在这个例子中编了一系列数字,但是我确信我实际使用的一系列数字是用户名/密码。它适用于系统中的其他脚本。我想我可以解码它,但我希望它可以工作,而不必在脚本中输入明文密码。 – George