2011-12-06 10 views
4

同じキーで複数の値を持つリクエストを送信する方法を教えてください。 要求ライブラリで同じキーの倍数の値を持つPOSTリクエストを送信

r = requests.post('http://www.httpbin.org/post', data={1: [2, 3]}) 
print r.content 

 
{ 
    ... 
    "form": { 
    "1": "3" 
    }, 
    ... 
} 

編集:

うーん、非常に奇妙な。私は、単純なフラスコのアプリケーションを使用してポストデータをエコーし​​ようと、私は取得しています:

[('1', u'2'), ('1', u'3')] 

はhttpbin.orgのこの単なる欠点ですか?

答えて

4

それはrequestsは問題なくPOSTデータを送っていたことが判明しました。 http://httpbin.orgエンドの問題でフォームデータが平坦化され、同じキーを持つ複数の値が無視されていました。

3

Werkzeug MultiDictをお試しください。 Flaskアプリケーションでこの目的に使用されているのと同じ構造です。

import requests 
from werkzeug.datastructures import MultiDict 

data = MultiDict([('1', '2'), ('1', '3')]) 
r = requests.post('http://www.httpbin.org/post', data=data) 
print(r.content) 

結果:

... 
"form": { 
    "1": [ 
    "2", 
    "3" 
    ] 
}, 
... 
関連する問題