2010-08-26 70 views
5

我尝试使用AppEngine中的urlfetch将POST数据发送到服务器。其中一些POST数据项具有相同的名称,但具有不同的值。使用AppEngine发送多个POST数据项使用AppEngine

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'}) 

然而,在这个例子中,服务器似乎receieve只有一个名为data项目,与价值bar。我怎么能解决这个问题?

回答

13

修改您form_fields字典,使得具有相同名称字段变成列表,并使用doseq参数urllib.urlencode

form_fields = { 
    "data": ["foo","bar"] 
} 

form_data = urllib.urlencode(form_fields, doseq=True) 

在这一点上, form_data'data=foo&data=bar',这是我认为你需要的。

+0

谢谢,威尔,这工作完美(很好和简单的解释) – jhanifen 2012-11-16 04:39:48

1

一个普通的python字典无法处理这种事情;使用这样的一个webob.MultiDict:

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