[pyar] Problema con generación de payload en requests?

Sebastián Seba ssebastianj en gmail.com
Mar Mayo 19 23:48:23 ART 2015


El 19 de mayo de 2015, 19:44, Sebastian Bassi <sebastian.bassi en globant.com>
escribió:

> Hola,
>
> Estoy haciendo un request POST usando "requests", que cuando tiene como
> payload un diccionario que uno de sus valores es otro diccionario, falla,
> al menos no puedo tomar los valores desde el servidor.
>
> Desde donde hago el POST:
>
> In [173]: testurl
> Out[173]: 'http://127.0.0.1:8080/dummy/'
>
> In [174]: a
> Out[174]: {2: {'dos': 2, 'uno': 1}, 'rojo': 'red'}
>
> In [175]: r = requests.post(testurl, data=a)
>
> En el lado del servidor, cuando viene ese request, hago un
> request.params.items() y obtengo:  [('rojo', 'red'), ('2', 'uno')]
>
> Tengo una manera de recibir todo el contenido del dict, usando json:
>
> r = requests.post(testurl, data=json.dumps(a))
>
> y del lado del server hago:
>
> (Pdb) json.loads(request.params.keys()[0])
> {u'rojo': u'red', u'2': {u'dos': 2, u'uno': 1}}
>
> Igual me interesaria saber que está pasando en el primer caso donde no
> tengo manera de recuperar el diccionario guardado con la clave 2 (en el
> original, o '2' en lo que queda en el server).
>
>
> Saludos,
> SB
>
>
> The information contained in this e-mail may be confidential. It has been
> sent for the sole use of the intended recipient(s). If the reader of this
> message is not an intended recipient, you are hereby notified that any
> unauthorized review, use, disclosure, dissemination, distribution or
> copying of this communication, or any of its contents,
> is strictly prohibited. If you have received it by mistake please let us
> know by e-mail immediately and delete it from your system. Many thanks.
>
>
>
> La información contenida en este mensaje puede ser confidencial. Ha sido
> enviada para el uso exclusivo del destinatario(s) previsto. Si el lector de
> este mensaje no fuera el destinatario previsto, por el presente queda Ud.
> notificado que cualquier lectura, uso, publicación, diseminación,
> distribución o copiado de esta comunicación o su contenido está
> estrictamente prohibido. En caso de que Ud. hubiera recibido este mensaje
> por error le agradeceremos notificarnos por e-mail inmediatamente y
> eliminarlo de su sistema. Muchas gracias.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

A mí de la primera forma me resulta:

In [1]: import requests

In [2]: d =  {2: {'dos': 2, 'uno': 1}, 'rojo': 'red'}

In [3]: r = requests.post('https://www.google.com.ar/', data=d)

In [4]: r.request.body
Out [4]: 'rojo=red&2=dos&2=uno'

La versión es la 2.7.0.

Igual, nunca envié un diccionario como valor pero no me cierra mucho. Como
dijeron, el JSON por ahí es ir a lo más seguro.

-- 


*Sebastián J. Seba*
http://ssebastianj.github.io
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150519/e9be27b6/attachment.html>


More information about the pyar mailing list