2016-10-11 6 views
0

Firebaseへの簡単なPOSTリクエストの作成。何らかの理由で、動作しません。同じデータを持つcURLは問題なく動作します。何か案は?Python:POST要求が機能していませんか?

以下のコード:

import requests  
r = requests.post("https://testapp-f55e1.firebaseio.com/test.json", data={"location":{"altitude":"200","latitude":"23.2", "longitude":"44.32"},"polution":{"pm10":"11","pm2":"123"}}) 
logging.debug(r) 

これは動作を開始しますが、何も起こりません。

INFO:Posting to https://testapp-f55e1.firebaseio.com/test.json 

リクエストはFirebaseに届きません。

同じURLでカールリクエストを行うと、チャームのように機能します。何か案は?

+0

どのように動作しないのですか? –

+0

@TristanT、おそらく400レスポンスは良い傾向になるでしょう。 –

+0

私はFirebase DBを見て、スクリプトを実行すると新しいレコードは追加されません。 curlコマンドを入力すると、新しいレコードが表示されます... @TristanT – R0b0tn1k

答えて

2

それはJSONと = = JSONはそうデータを置き換える期待し、要求がjson.dumpsを呼び出して、あなたのためのヘッダーを設定します:

In [6]: import requests 
    ...: r = requests.post("https://testapp-f55e1.firebaseio.com/test.json", json 
    ...: ={"location":{"altitude":"200","latitude":"23.2", "longitude":"44.32"}," 
    ...: polution":{"pm10":"11","pm2":"123"}}) 
    ...: print(r) 
    ...: print(r.json()) 
    ...: 
<Response [200]> 
{'name': '-KTpRAvBqP4Ra-FSXtKO'} 

出力をデータを使用してから=でしたあなたに手がかりを与えます:

In [7]: import requests 
    ...: r = requests.post("https://testapp-f55e1.firebaseio.com/test.json", data 
    ...: ={"location":{"altitude":"200","latitude":"23.2", "longitude":"44.32"}," 
    ...: polution":{"pm10":"11","pm2":"123"}}) 
    ...: print(r) 
    ...: print(r.json()) 
    ...: 
<Response [400]> 
{'error': "Invalid data; couldn't parse JSON object, array, or value. Perhaps you're using invalid characters in your key names."} 
+0

はい、それを行いました! – R0b0tn1k

関連する問題