使用请求库发送具有相同键的多个值的 POST 请求

发布于 2024-12-19 11:39:02 字数 358 浏览 0 评论 0原文

您将如何发送具有相同密钥的多个值的请求?

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

编辑:

嗯,很奇怪。我尝试使用一个简单的 Flask 应用程序回显发布数据,我得到:

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

这只是 httpbin.org 的一个缺点吗?

How would you go about sending a request with multiples values with the same key?

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

Edit:

Hmm, very odd. I tried echoing the post data using a simple Flask application and I'm getting:

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

Is this just a shortcoming of httpbin.org?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恋竹姑娘 2024-12-26 11:39:02

尝试 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"
  ]
},
...

Try the Werkzeug MultiDict. It's the same structure used for this purpose in Flask applications.

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)

Result:

...
"form": {
  "1": [
    "2",
    "3"
  ]
},
...
千笙结 2024-12-26 11:39:02

事实证明,requests 发送 POST 数据没有任何问题。这是 http://httpbin.org 端的一个问题,导致表单数据扁平化,并且多个值相同的键被忽略。

It turns out that requests was sending the POST data without a problem. It was an issue on the http://httpbin.org end that was causing form data to be flattened, and multiple values with the same key to be ignored.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文