Einen POST-Aufruf anstelle von GET unter Verwendung von urllib2 durchführen
Gibt es eine Menge Zeug gibt auf urllib2 und POST Anrufe, aber ich bin festgefahren auf ein problem.
Ich versuche zu tun, eine einfache POST-Aufruf an einen service:
url = 'http://myserver/post_service'
data = urllib.urlencode({'name' : 'joe',
'age' : '10'})
content = urllib2.urlopen(url=url, data=data).read()
print content
Sehe ich die server-logs, und es sagt, dass ich das Tue BEKOMME Anrufe, wenn ich das senden der Daten
argument urlopen.
Der Bibliothek ist, dass ein 404-Fehler (nicht gefunden), ist das so richtig für einen GET-Aufruf, POST-Aufrufe sind gut verarbeitet (ich versuche auch mit einem POST in einem HTML-Formular).
InformationsquelleAutor der Frage alfonso.kim | 2011-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möglicherweise wurde diese zuvor beantwortet: Python-das urllib /URLLib2 POST.
Dein server ist wahrscheinlich die Durchführung einer 302-Umleitung-von
http://myserver/post_service
zuhttp://myserver/post_service/
. Wenn die 302-Weiterleitung wird durchgeführt, die änderungen verlangen von der POST zu HOLEN (siehe Problem 1401). Versuchen Sieurl
zuhttp://myserver/post_service/
.InformationsquelleAutor der Antwort Gregg
Tun Sie es in Etappen, und ändern Sie das Objekt, so wie hier:
Diese Weise können Sie verlängern zu machen
PUT
DELETE
HEAD
undOPTIONS
Anfragen zu, einfach durch ersetzen des Werts von Methode oder sogar wickeln Sie es in eine Funktion. Je nachdem, was Sie versuchen zu tun, müssen Sie möglicherweise auch einen anderen HTTP-handler, z.B. für multi-Datei-upload.InformationsquelleAutor der Antwort
Den Anfragen Modul kann deine Schmerzen lindern.
InformationsquelleAutor der Antwort Michael Kent
Haben, Lesen Sie die das urllib Fehlende Handbuch. Zog von dort ist das folgende einfache Beispiel einer POST-Anfrage.
Vorgeschlagen von @Michael Kent betrachten Anfragenes ist toll.
EDIT: Dieser sagte, ich weiß nicht, warum die Weitergabe der Daten zu urlopen() führt nicht zu einer POST-Anforderung; Es sollten. Ich vermute, Ihr server umgeleitet wird, oder sich schlecht benommen.
InformationsquelleAutor der Antwort Rob Cowie
es sollte schickt eine POST, wenn Sie eine Daten-parameter (wie Sie tun):
aus den docs:
"die HTTP-Anforderung wird eine POST anstelle von GET, wenn der parameter data zur Verfügung gestellt"
so.. fügen Sie einige debug-Ausgabe zu sehen, was sich von der client-Seite.
können Sie den code so ändern das und versuchen Sie es erneut:
InformationsquelleAutor der Antwort Corey Goldberg
Versuchen Sie dies:
InformationsquelleAutor der Antwort rupello
Werden können, kann dies helfen,
InformationsquelleAutor der Antwort Vijay Chander