data = {
'ids': [12, 3, 4, 5, 6 , ...]
}
urllib2.urlopen("http://abc.com/api/posts/create",urllib.urlencode(data))
Quiero enviar una solicitud POST, pero uno de los campos debe ser una lista de números. Cómo puedo hacer eso ? (¿JSON?)
Respuestas:
Si su servidor espera que la solicitud POST sea json, entonces deberá agregar un encabezado y también serializar los datos para su solicitud ...
Python 2.x
Python 3.x
https://stackoverflow.com/a/26876308/496445
Si no especifica el encabezado, será el
application/x-www-form-urlencoded
tipo predeterminado .fuente
add_header()
vuelve a llamar , por cada encabezado que quieras agregar.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
yurllib.request.Request()
. Además, imprimir el objeto req no hace nada interesante. Puede ver claramente que los encabezados se han agregado al imprimirreq.headers
. Más allá de eso, no estoy seguro de por qué no funciona en su aplicación.Recomiendo usar el
requests
módulo increíble .http://docs.python-requests.org/en/v0.10.7/user/quickstart/#custom-headers
fuente
TypeError: post() takes from 1 to 2 positional arguments but 3 were given
para Python 3.4.2 encontré que lo siguiente funcionará:
fuente
Esto funciona perfectamente para
Python 3.5
, si la URL contiene un valor de cadena de consulta / parámetro,URL de solicitud = https://bah2.com/ws/rest/v1/concept/
Valor de parámetro = 21f6bb43-98a1-419d-8f0c-8133669e40ca
fuente
Tienes que agregar un encabezado, o obtendrás el error http 400. El código funciona bien en python2.6, centos5.4
código:
fuente
Aquí hay un ejemplo de cómo usar el objeto urllib.request de la biblioteca estándar de Python.
fuente
En el último paquete de solicitudes, puede usar el
json
parámetro inrequests.post()
method para enviar un dict json, y elContent-Type
encabezado in se establecerá enapplication/json
. No es necesario especificar el encabezado de forma explícita.fuente
Este me funciona bien con apis
fuente