Python-requests-Modul: urlencoding json-Daten

Arbeite ich an einer API-wrapper. Die Skillung, die ich versuche zu bauen, hat die folgende Anfrage:

curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"[email protected]"}' http://localhost:5000/

Diese Anfrage erzeugt die folgende Antwort aus einem kleinen test-server-setup, um zu sehen, exatly was Kopf - /params etc verschickt. Dieses kleine script erzeugt:

uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"[email protected]"}

So, oben ist das Ergebnis möchte ich mein python-Skript zu erstellen, wenn es Sie trifft die kleinen test-Skript.

Ich bin mit dem python-requests-Modul, welches die schönsten HTTP lib, die ich je benutzt habe. So, hier ist mein python-code:

uri = "http://localhost:5000/"
headers = {'content-type': 'application/json' }
params = {}
data = {"name":"Partner13", "email":"[email protected]"}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params, headers=headers)

So einfach genug Zeug. Legen Sie die Header, und erstellen Sie ein Wörterbuch für die POST-Parameter. Das dictionary hat einen Eintrag mit der Bezeichnung "Daten", die den JSON-string an die Daten will ich an den server senden. Dann rufe ich den post. Allerdings ist das Ergebnis meiner kleinen test-Skript zurück gibt, ist:

uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data=%7B%22name%22%3A+%22Partner13%22%2C+%22email%22%3A+%22example%40example.com%22%7D

Also im wesentlichen die json-Daten, die ich senden wollte unter die Daten-parameter wurde urlendcoded.

Weiß jemand, wie man dieses Problem beheben? Ich schaute durch die Anforderungen der Dokumentation und kann nicht scheinen zu finden ein Weg, um nicht auto urlencode die Daten senden.

Vielen Dank,
Kevin

Die Daten aus Ihrem curl Beispiel ist kein gültiges json. Es ist eine Mischung zwischen form-Codierung und json.

InformationsquelleAutor kevin | 2013-04-01

Schreibe einen Kommentar