2016-12-06 211 views
1

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

回答

3

您應該使用請求的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