Curl POST request in pycurl-code
Ich versuche zu konvertieren folgenden curl-Anfrage in pycurl:
curl -v
-H Accept:application/json \
-H Content-Type:application/json \
-d "{
name: 'abc',
path: 'def',
target: [ 'ghi' ]
}" \
-X POST http://some-url
Ich habe folgenden python code:
import pycurl, json
c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://some-url')
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json'])
data = json.dumps({"name": "abc", "path": "def", "target": "ghi"})
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)
c.setopt(pycurl.VERBOSE, 1)
c.perform()
print curl_agent.getinfo(pycurl.RESPONSE_CODE)
c.close()
Ausführung dieses hatte ich einen Fehler 415: Unsupported media type, also habe ich das geändert:
c.setopt(pycurl.HTTPHEADER, ['Accept: application/json'])
in:
c.setopt(pycurl.HTTPHEADER, [ 'Content-Type: application/json' , 'Accept: application/json'])
Dieser Zeit habe ich 400: Bad request. Aber bash-code mit curl funktioniert. Haben Sie eine Ahnung, was sollte ich fix in python-code?
InformationsquelleAutor Konrad | 2015-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem bash-Beispiel, die Eigenschaft
target
ist ein array, in Ihrem Python-Beispiel ist es ein string.Versuchen Sie dies:
Ich auch raten Ihnen dringend zu prüfen, die
Anfragen
Bibliothek, die hat eine viel schönere API:vielen Dank für Ihren Kommentar. Ich war nicht bewusst, dass und hatte nie irgendwelche Probleme mit Anfragen, die mich, wäre aber interessiert, mehr über die Probleme, die Sie beschreiben. Können Sie mir weitere Informationen?
InformationsquelleAutor Daniel Hepper
Ich weiß, das ist über ein Jahr alt jetzt, aber bitte entfernen Sie die Leerzeichen in der Kopf-Wert.
Ich auch lieber mit den Anforderungen Modul als gut, weil die APIs/Methoden sind einfach und sauber zu verwenden.
InformationsquelleAutor Brian
Ich hatte ähnliches problem, und ich habe Ihre code-Beispiel, aber aktualisiert die
httpheader
Abschnitt wie folgt:InformationsquelleAutor Ashwin Venkat
Ist es besser, einfach zu bedienen Anforderungen-Bibliothek. (http://docs.python-requests.org/en/latest)
Ich append python-code für das ursprüngliche curl-custom-Header.
InformationsquelleAutor IJL