data = {
'ids': [12, 3, 4, 5, 6 , ...]
}
urllib2.urlopen("http://abc.com/api/posts/create",urllib.urlencode(data))
Ich möchte eine POST-Anfrage senden, aber eines der Felder sollte eine Liste von Nummern sein. Wie kann ich das machen ? (JSON?)
Antworten:
Wenn Ihr Server erwartet, dass die POST-Anforderung json ist, müssen Sie einen Header hinzufügen und die Daten für Ihre Anforderung serialisieren ...
Python 2.x.
Python 3.x.
https://stackoverflow.com/a/26876308/496445
Wenn Sie den Header nicht angeben, ist dies der Standardtyp
application/x-www-form-urlencoded
.quelle
add_header()
Sie einfach erneut an, für jeden Header, den Sie hinzufügen möchten.req = urllib.Request('http://uat-api.synapsefi.com') req.add_header('X-SP-GATEWAY', 'client_id_asdfeavea561va9685e1gre5ara|client_secret_4651av5sa1edgvawegv1a6we1v5a6s51gv') req.add_header('X-SP-USER-IP', '127.0.0.1') req.add_header('X-SP-USER', '| ge85a41v8e16v1a618gea164g65') req.add_header('Content-Type', 'application/json') print(req)
...The view tab.views.profileSetup didn't return an HttpResponse object. It returned None instead.
@jdiimport urllib.request
undurllib.request.Request()
. Darüber hinaus ist das Drucken des req-Objekts nicht interessant. Sie können deutlich sehen, dass die Überschriften durch Drucken hinzugefügt wurdenreq.headers
. Darüber hinaus bin ich mir nicht sicher, warum es in Ihrer Anwendung nicht funktioniert.Ich empfehle das unglaubliche
requests
Modul.http://docs.python-requests.org/en/v0.10.7/user/quickstart/#custom-headers
quelle
TypeError: post() takes from 1 to 2 positional arguments but 3 were given
Für Python 3.4.2 habe ich festgestellt, dass Folgendes funktioniert:
quelle
Dies funktioniert perfekt
Python 3.5
, wenn die URL den Wert "Abfragezeichenfolge / Parameter" enthält.Anforderungs-URL = https://bah2.com/ws/rest/v1/concept/
Parameterwert = 21f6bb43-98a1-419d-8f0c-8133669e40ca
quelle
Sie müssen einen Header hinzufügen, sonst wird der Fehler http 400 angezeigt. Der Code funktioniert gut unter Python2.6, Centos5.4
Code:
quelle
Hier ist ein Beispiel für die Verwendung des Objekts urllib.request aus der Python-Standardbibliothek.
quelle
Im Paket mit den letzten Anforderungen können Sie den
json
Parameter inrequests.post()
method verwenden, um ein JSON-Diktat zu senden, und derContent-Type
In-Header wird auf gesetztapplication/json
. Es ist nicht erforderlich, den Header explizit anzugeben.quelle
Dieser funktioniert gut für mich mit Apis
quelle