Das HTTP-POST-Anforderung mit Anforderungen in Python

Ich bin versucht, eine HTTP-Anforderung an eine API mit der POST-Methode. Die API, die ich verwende, ist gedacht, um in drei Parametern (key1, key2, key3) und wieder eine json-Datei. Leider ist meine POST-request scheint nicht zu etwas zurückkehren, wenn ich mit der Daten Methode, um an meinem Wörterbuch auf die API. Dies scheint sehr seltsam, weil es scheint zu funktionieren, wenn ich mit der params Methode. Ich kann nicht versuchen dies zu verstehen, wie dieser Prozess scheint zu sein, sehr undurchsichtig ist (z.B. kann ich eine URL, um zu sehen, wie die Nutzlast der an die API).

Meine Frage: Was mache ich hier falsch?

POST-Anfrage, wo die Parameter gesendet werden, die über die API mit Daten Methode:

import requests

url = 'http://example.com/API.php'
payload =  {
            'key1': '<<Contains very long json string>>', 
            'key2': 5, 
            'key3': 0
           }

print len(str(payload)) # Prints 6717
r = requests.post(url, data=payload) << Note data is used here
print r.status_code # Prints 200
print r.text # Prints empty string

POST-request-code, wo die Parameter gesendet werden, die über die API mit der params Methode:

import requests

url = 'http://example.com/API.php'
payload =  {
            'key1': '<<Contains very long json string>>', 
            'key2': 5, 
            'key3': 0
           }

print len(str(payload)) # Prints 6717
r = requests.post(url, params=payload) << Note here params is used here
print r.status_code # Prints 200
print r.text # Prints expected JSON results

Wenn Sie sich Fragen, warum ich würde gerne mit dem Daten Methode über params... ich versuche mich zu übergeben, andere Wörterbücher mit mehr Saiten und die params Methode nicht scheinen, es zu tun, weil ich bin immer FEHLER 414. Ich hatte gehofft, dass der Fehler konnte gelöst werden, indem Sie Daten.

Die API, die ich verwenden, wurde in PHP geschrieben.

Mit welchem encoding funktioniert das API erwarten für den request-body? Könnte es erwartet werden, JSON, oder multipart/form-data?
Möglich, Duplikat der Unterschied zwischen "Daten" und "params" in Python-requests?
Es tut mir Leid. Im moment bin ich nicht ganz sicher darüber, wie die API in PHP geschrieben, die von meinem Kollegen. Allerdings war ich unter der Annahme, dass die API erwartet einen JSON. Ich habe versucht, das hinzufügen des folgenden headers der HTTP-Anforderung zusammen mit der Daten Methode: headers = {'Content-Type': "application/json; charset=UTF-8"} und headers = {'Content-Type': "multipart/form-data; charset=UTF-8"} Sie schien nicht zu helfen. Ich hoffe, dass ich Ihre Frage beantwortet.

InformationsquelleAutor user2646237 | 2017-06-25

Schreibe einen Kommentar