2017-07-28 2 views
1

SonarQubeでプロジェクトを削除するための投稿要求を送信する単純なpython 3スクリプトがあります。私は私のpythonスクリプトを取得し続けている間、単純なカールコマンドが動作します...何か私のpythonスクリプトで間違っているアイデア?Python Post - レスポンスは400になりますが、カールは機能します

import requests 

headers = { 
    'Authorization': 'Basic YWRtaW46YWRtaW4=', 
} 

files = [ 
    ('key', 'com.eclipseoptions.viewserver:viewserver:feature_VS-313-add-an-instruction-event-and-view'), 
] 

r = requests.post('http://devsonar/api/projects/delete', headers=headers, files=files) 
print(r) 

次curlコマンドが正常に動作します:

curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -F "key=com.eclipseoptions.viewserver:viewserver:feature_VS-313-add-an-instruction-event-and-view" "http://devsonar/api/projects/delete" 

答えて

2

パイソンリクエストは本当に良いライブラリです。投稿のファイルオプションがファイルをアップロードするために使用されていて、com.eclipseoptions.viewserver:viewserver:feature_VS-313-add-an-instruction-event-and-viewがファイルであるとは思わない場合は、ファイルをバイナリモードで読み込んでからfiles = {'key': open(filename, 'rb')}のように送信する必要があります。そのコードは次のようになります。

import requests 
files = {'key': open(filename, 'rb')} 
headers = {'Authorization': 'Basic YWRtaW46YWRtaW4='} 
response=requests.post(url,files=files) 

check this pythonでリクエスト・ライブラリを使用してファイルをアップロードの詳細については。

それがファイルでない場合は、このような辞書として直接ペイロードを送信することができます:ペイロードを送信する方法の詳細について

import requests 
headers = {'Authorization': 'Basic YWRtaW46YWRtaW4='} 
data = {'key': 'com.eclipseoptions.viewserver:viewserver:feature_VS-313-add-an-instruction-event-and-view'} 
response=requests.post(url,data=data,headers=headers) 

check this

0

あなたはPythonスクリプトへの入力として、これは動作するはずのデータではなく、ファイルを、使用している必要があります。

import requests 

headers = { 
    'Authorization': 'Basic YWRtaW46YWRtaW4=', 
} 

files = [ 
    ('key', 'com.eclipseoptions.viewserver:viewserver:feature_VS-313-add-an-instruction-event-and-view'), 
] 

r = requests.post('http://devsonar/api/projects/delete', headers=headers, data=files) 
関連する問題