Appengineを使用して、同じ名前の複数の投稿データ項目を送信する
-
01-10-2019 - |
質問
Appengineのurlfetchを使用して、投稿データをサーバーに送信しようとします。これらのポストデータ項目の一部は同じ名前を持っていますが、値は異なります。
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'})
ただし、この例では、サーバーは名前の1つのアイテムのみを受け取っているようです data
, 、価値があります bar
. 。どうすればこの問題を解決できますか?
解決
あなたを変更します form_fields
同じ名前のフィールドがリストに変わって、 doseq
への議論 urllib.urlencode
:
form_fields = {
"data": ["foo","bar"]
}
form_data = urllib.urlencode(form_fields, doseq=True)
この時点で、 form_data
は 'data=foo&data=bar'
, 、それがあなたが必要とすると思うものです。
他のヒント
通常のPython Dictは、この種のことを処理できません。 webob.multidictのようなものを使用してください:
>>> z = webob.MultiDict([('foo', 'bar'), ('foo', 'baz')])
>>> urllib.urlencode(z)
'foo=bar&foo=baz'
所属していません StackOverflow