2016-05-22 23 views
0

私のシステムでは、curl POSTを使用してtipboardのAPIをテストしています。私は正常に使用してボードにPOSTを送信することができました。最後に使用しなければならないスクリプトはPythonに基づいているcurl POSTをPythonリクエストに変換する

curl https://** SECRET **/api/v0.1/** SECRET **/push -X POST -d "tile=big_value" -d "key=t_out" -d 'data={"title": "Outside Temperature", "description": "Temperature gathered by DS18B20 sensor", "big-value": "24.4 °C"}' 

、私はいくつかの研究を行なったし、requests Pythonライブラリを見つけました。

私は次のコードに私のカール要求を変換:私は私のペイロードが正しく、最も可能性の高い問題に設定されていないことを前提としてい

There is no 'tile' field in your request. 
(400, 'Bad Request') 

payload = {'title': 'big_value', 'key': 't_out', 'data': '"title": "Outside Temperature", "description": "Temperature gathered by DS18B20 sensor", "big-value": "24.4 °C"'} 
r = requests.post("https://** SECRET **/api/v0.1/** SECRET **/push", data=payload) 
print(r.text) 
print(r.status_code, r.reason) 

私に次のエラーコードを示しますcurlのような複数の "データ要素"を送信するのではなく、Pythonを使用するときにはただ1つの "data"オブジェクトしか送信しないということです。

私のカールの要求をPythonの変種に均等に変換できますか?

編集:

payload = {'tile': 'big_value', 'key': 't_out', 'data': '"title": "Outside Temperature", "description": "Temperature gathered by DS18B20 sensor", "big-value": "24.4 °C"'} 
r = requests.post("https://dev-01.linuxmind.de/api/v0.1/46d7213bd81d441783dc9ab77e5515c2/push", data=payload) 
print(r.text) 
print(r.status_code, r.reason) 
:私は私のリクエストで「タイトル」ではなく「タイル」を持っていたダン・ロウズヒントに続いて

は、以下の(編集済み)コードを使用して別のエラーで、さらに私を導きます

エラー:

Invalid JSON data. 

(400, 'Bad Request') 
+1

あなたのカールコードは 'tile = big_value'を設定しますが、Pythonコードでは' tile'ではなく 'title'として設定します。 –

+0

あなたのデータパラメータは、文字列ではなく別のPython辞書である必要があります –

+1

この回答を見てください。 http://stackoverflow.com/a/29687915/2308683 –

答えて

1

がないdictとして文字列として投稿するdataオブジェクトに変換します。

関連する問題