I try to send POST data to a server using urlfetch in AppEngine. Some of these POST-data items has the same name, but with different values.
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'})
However, in this example, the server seems to receieve only one item named data, with the value bar. How could I solve this problem?
Modify your form_fields dictionary so that fields with the same name are turned into lists, and use the doseq argument to urllib.urlencode:
form_fields = {
   "data": ["foo","bar"]
}
form_data = urllib.urlencode(form_fields, doseq=True)
At this point, form_data is 'data=foo&data=bar', which is what I think you need.
A normal python dict can't handle this sort of thing; use something like a webob.MultiDict:
>>> z = webob.MultiDict([('foo', 'bar'), ('foo', 'baz')])
>>> urllib.urlencode(z)
'foo=bar&foo=baz'
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论