2016-12-06 19 views
1

にcurlコマンドを変換する -正常に動作私が持っているcurlコマンドは、Pythonの要求

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" 

、これは私が現在持っているものである -

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

'data =' – furas

答えて

3

基本認証の要求には、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を変更 あなたのためのCURLコマンドラインハンドル(あなたがauthを使用しないとの要求がそれらを処理しませんが)複数のヘッダがあります。すべて)。

また、requestsにはparams=data=ではなく)が必要です。

+0

の代わりに 'params ='が必要です。私が現在持っている唯一の値は、base64でエンコードされた値です(CmUnMm9dOkJGhaUIwBaMlNTYyJh =と言うことができます)。ユーザー/パス、それはまだこのメソッドを使用することは可能でしょうか? – George

+0

これは値ですか? – Dekel

+0

私はその例で一連の数字を作りましたが、実際に使用している一連の数字はユーザー名/パスワードであると確信しています。システム内の他のスクリプトでも機能しています。私はそれを解読できると思うが、私はスクリプトの中に平文のパスワードを入れなければならないとうまくいきたいと思っていた。 – George

関連する問題