2016-07-08 12 views
0

APIへのポストリクエストを送信しています。 APIでは、raw形式のparamsが必要です。Pythonリクエストライブラリが正しいパラメータを送信していません

headers = {"content-type" : "application/json"} 
url = "http://test.web.com/web_api/CreateHeader" 
params = {"param1" : "asd", "param2" : "asdd"} 
r = requests.post(url, data = json.dumps(params), headers = headers, auth = HTTPBasicAuth('user', 'pass')) 
r.json() 

ここで、ポストリクエストのリターンは失敗します。ただし、このようなパラメータを送信すると、

params ="{\n \"param1\" : \"asd\", \"param2\" : \"asdd\"\n}" 
r = requests.post(url, data = params, headers = headers, auth = HTTPBasicAuth('user', 'pass')) 

成功します。あなたはここで何が起こっているのか知っていますか?あなたの説明から

+2

なぜデータをjsonとして送信していますか、それを辞書として送信してください。単に 'data = json.dumps(params)'の代わりに 'data = params'を実行してください。 – karthikr

+0

apiはraw形式のデータを期待しています。私は辞書としてそれを送ったが失敗した。 –

+0

ありがとうございますが、いいえ、それは私が質問を入力する間に作った間違いでした。 –

答えて

-1

APIは、JSONなどのデータを期待しているようだ、そう

r = requests.post(url, json=params, headers=headers) 

は動作するはずです。

+0

答えをありがとう。私はそれを試みたが、それはまだ動作しませんでした。 –

関連する問題