2016-10-11 6 views
0

Erstellen einer einfachen POST-Anforderung an Firebase. Aus irgendeinem Grund funktioniert es nicht. cURL mit den gleichen Daten funktioniert, keine Probleme. Irgendwelche Ideen?Python: POST-Anfrage funktioniert nicht?

-Code unten:

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) 

Es beginnt zu arbeiten, aber es passiert nichts.

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

Die Anforderung erreicht Firebase nicht.

Wenn ich eine Curl-Anfrage mit der gleichen URL mache, funktioniert es wie ein Charme. Irgendwelche Ideen?

+0

Woher wissen Sie, dass es nicht funktioniert? –

+0

@TristanT, wahrscheinlich würde die 400 Antwort eine gute Neigung sein. –

+0

Ich schaue mir die Firebase DB an, und beim Ausführen des Skripts werden keine neuen Datensätze hinzugefügt. Neue Einträge erscheinen, wenn ich den curl-Befehl tue ... @TristanT – R0b0tn1k

Antwort

2

Es erwartet json so data = mit json ersetzen =, werden Anfragen rufen json.dumps und legen Sie die Header für Sie:

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'} 

Die Ausgabe von Daten unter Verwendung von = war geben Sie eine Ahnung:

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

Ja, das war's! – R0b0tn1k