2010-08-26 69 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' 
相關問題