Verwenden von Python 3.5 und Anforderungen 2.18.4 Ich muss Daten an einen anderen Dienst senden, und es ist derzeit aus irgendeinem Grund fehlgeschlagen. Der Versand erfolgt, nachdem ich Daten von einem anderen Dienst empfangen und bereinigt habe, und schließlich die Daten als natives Python-Dict verifiziert und festgelegt. Dies funktioniert, wenn die Daten hartcodiert ist, und ich bin nicht die eingehenden Daten (hartcodiert json string) mit:Failing requests.post bei Verwendung von json.dumps
def my_post_method(self, url, data):
# import requests (above)
return requests.post(
url,
data='{"keyA":"valA", "keyB":"valB" ... }',
headers={'Content-Type': 'application/json'},
) # status 200
Aber ich kann es aus irgendeinem Grund nicht mit den Originaldaten senden.
def my_post_method(self, url, data):
# import requests, json (above)
d = json.dumps(data)
return requests.post(
url,
data=d,
headers={'Content-Type': 'application/json'},
) # status 400
d von oben: {"keyA":"valA", "keyB":"valB" ... }
Ich habe versucht, die Anforderungen json Parameter anstelle von Daten zu verwenden, aber der andere Dienst ist offenbar Datenparameter am anderen Ende zu erwarten. Bedeutet dies, dass der Dienst, auf den ich poste, auf eine json-formatierte Zeichenfolge wartet?
Können wir den anderen Service kennen? Ist es etwas öffentliches, was wir ausprobieren können? – GendoIkari
Haben Sie versucht, den POST erneut mit der fest codierten Zeichenfolge zu erstellen? Ist es möglich, dass der Dienst 400s zurückgibt, weil er nicht möchte, dass Sie dieselbe Anfrage zweimal stellen? –
Vielen Dank @Rob Watts, aber ich antwortete unten - aus irgendeinem seltsamen Grund wurde Reihenfolge der Schlüssel-Werte berücksichtigt, wenn das Empfangsende die eingehenden Daten überprüft wurde. Ich weiß wirklich nicht warum ... – camelBack