ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-处理HTTP帖子中的重复键以指定多个值

2019-10-10 17:00:10  阅读:677  来源: 互联网

标签:python python-requests http-post



背景

> python 2.7
>请求模块
>使用重复键的http发布,以指定多个值

问题

Trevor在网站上使用python请求,该网站采用重复键来指定多个值.问题是,JSONPython字典不允许重复的键,因此只有其中一个键可以通过.

目标

>目标是使用python请求创建一个HTTP帖子,该帖子带有重复的键,以表示POST名称/值对中的重复名称.

尝试失败

## sample code
payload = {'fname': 'homer', 'lname': 'simpson'
         , 'favefood': 'raw donuts'
         , 'favefood': 'free donuts'
         , 'favefood': 'cold donuts'
         , 'favefood': 'hot donuts'
         }
rtt = requests.post("http://httpbin.org/post", data=payload)

也可以看看

网页链接:

> https://duckduckgo.com/?q=python+requests

> Trevor如何使用python请求完成此任务?

解决方法:

您可以通过以下方式合成有效负载:

payload = [
    ('fname', 'homer'), ('lname', 'simpson'),
    ('favefood', 'raw donuts'), ('favefood', 'free donuts'),
]
rtt = requests.post("http://httpbin.org/post", data=payload)

但是,如果您的情况允许,我希望在列表中以所有’favefoood’的形式发布JSON:

payload = {'fname': 'homer', 'lname': 'simpson', 
    'favefood': ['raw donuts', 'free donuts']
}
# 'json' param is supported from requests v2.4.2
rtt = requests.post("http://httpbin.org/post", json=payload)

或者,如果不推荐使用JSON,请将所有“ favefood”合并为一个字符串(请仔细选择分隔符):

payload = {'fname': 'homer', 'lname': 'simpson',
    'favefood': '|'.join(['raw donuts', 'free donuts']
}
rtt = requests.post("http://httpbin.org/post", data=payload)


标签:python,python-requests,http-post

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有