質問

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'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top