Envío de múltiples elementos de datos POST con el mismo nombre, usando AppEngine

Intento enviar datos POST a un servidor utilizando urlfetch en AppEngine. Algunos de estos elementos de datos POST tienen el mismo nombre, pero con valores diferentes.

form_fields = { "data": "foo", "data": "bar" } form_data = urllib.urlencode(form_fields) result = urlfetch.fetch(url="http://www.foo.com/", payload=form_data, method=urlfetch.POST, headers={'Content-Type': 'application/x-www-form-urlencoded'}) 

Sin embargo, en este ejemplo, el servidor parece recibir solo un elemento denominado data , con la bar valores. ¿Cómo podría resolver este problema?

Modifique su diccionario form_fields para que los campos con el mismo nombre se conviertan en listas, y use el argumento urllib.urlencode para urllib.urlencode :

 form_fields = { "data": ["foo","bar"] } form_data = urllib.urlencode(form_fields, doseq=True) 

En este punto, form_data es 'data=foo&data=bar' , que es lo que creo que necesitas.

Un dict de python normal no puede manejar este tipo de cosas; utilizar algo como un webob.MultiDict:

 >>> z = webob.MultiDict([('foo', 'bar'), ('foo', 'baz')]) >>> urllib.urlencode(z) 'foo=bar&foo=baz'