6

AppEngine で urlfetch を使用して POST データをサーバーに送信しようとしています。これらの POST データ項目の一部は同じ名前ですが、値が異なります。

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

dataただし、この例では、サーバーは、値が であるという名前のアイテムを 1 つだけ受信しているようですbar。どうすればこの問題を解決できますか?

4

2 に答える 2

14

form_fields同じ名前のフィールドがリストになるように辞書を変更し、次のdoseq引数を使用しurllib.urlencodeます。

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

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

この時点で、form_datais'data=foo&data=bar'が必要だと思います。

于 2010-08-26T16:50:03.837 に答える
1

通常の python dict は、この種のことを処理できません。webob.MultiDict のようなものを使用します。

>>> z = webob.MultiDict([('foo', 'bar'), ('foo', 'baz')])
>>> urllib.urlencode(z)
'foo=bar&foo=baz'
于 2010-08-26T16:46:48.280 に答える