用Python中的许多参数发布请求

时间:2014-08-12 20:32:25

标签: python python-requests

我需要在python上发布请求,有很多参数。我有一个关键'名称'和许多值。我尝试使用requests库。请求应该是这样的:

requests.post('http://mysite.cc/name=val1&name=val2&name=val3')

name有超过100个值。文档说我可以发送params的词典,如{'name': 'val1', 'name': 'val2', 'name': 'val3'}。但我真的不明白如何使用一个键dict和值列表创建name

1 个答案:

答案 0 :(得分:3)

您可以使用列表作为值:

params = {'name': ['val1', 'val2', 'val3', 'val4']}

response = requests.get(url, params=params)

并将其作为name=val1&name=val2&name=val3添加到网址。

请注意,params参数用于指定网址参数,即?问号后面的网址部分。这通常用于 GET 请求,但您也可以将其与POST一起使用。

如果您需要将POST主体中的参数作为application/x-www-form-urlencoded正文发送,请改为使用data

params = {'name': ['val1', 'val2', 'val3', 'val4']}

response = requests.post(url, data=params)

使用http://httpbin.org进行演示:

>>> import requests
>>> from pprint import pprint
>>> params = {'name': ['val1', 'val2', 'val3', 'val4']}
>>> url = 'http://httpbin.org/get'
>>> response = requests.get(url, params=params)
>>> pprint(response.json())
{u'args': {u'name': [u'val1', u'val2', u'val3', u'val4']},
 u'headers': {u'Accept': u'*/*',
              u'Accept-Encoding': u'gzip, deflate, compress',
              u'Connection': u'close',
              u'Host': u'httpbin.org',
              u'User-Agent': u'python-requests/2.2.1 CPython/2.7.6 Darwin/13.2.0',
              u'X-Request-Id': u'2fb6d325-308a-4669-a791-73666ac0d298'},
 u'origin': u'84.92.98.170',
 u'url': u'http://httpbin.org/get?name=val1&name=val2&name=val3&name=val4'}
>>> url = 'http://httpbin.org/post'
>>> response = requests.post(url, data=params)
>>> pprint(response.json())
{u'args': {},
 u'data': u'',
 u'files': {},
 u'form': {u'name': [u'val1', u'val2', u'val3', u'val4']},
 u'headers': {u'Accept': u'*/*',
              u'Accept-Encoding': u'gzip, deflate, compress',
              u'Connection': u'close',
              u'Content-Length': u'39',
              u'Content-Type': u'application/x-www-form-urlencoded',
              u'Host': u'httpbin.org',
              u'User-Agent': u'python-requests/2.2.1 CPython/2.7.6 Darwin/13.2.0',
              u'X-Request-Id': u'473e4e2d-e125-45b8-9697-b93b23ec2eca'},
 u'json': None,
 u'origin': u'84.92.98.170',
 u'url': u'http://httpbin.org/post'}