【问题标题】:handling duplicate keys in HTTP post in order to specify multiple values处理 HTTP post 中的重复键以指定多个值
【发布时间】:2014-11-24 23:54:31
【问题描述】:

背景

  • python 2.7
  • 请求模块
  • http post 带有重复键来指定多个值

问题

Trevor 正在使用 python 请求和一个使用重复键来指定多个值的网站。问题是,JSON 和 Python 字典不允许重复键,所以只有一个键可以通过。

目标

  • 目标是使用 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)

另见

网页链接:

问题

  • Trevor 如何使用 python 请求完成这项任务?

【问题讨论】:

    标签: python http-post python-requests


    【解决方案1】:

    您可以通过这种方式合成有效载荷:

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

    但如果您的情况允许,我更喜欢 POST 一个包含所有“favefood”的 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)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2012-08-04
    • 2022-01-13
    • 2018-05-30
    • 2011-05-13
    相关资源
    最近更新 更多