你在做什么只是正确的。生成的网址与您期望的相同。
>>> payload = {'name': 'hello', 'data': 'hello'}
>>> r = requests.get("http://example.com/api/params", params=payload)
您可以看到结果网址:
>>> print(r.url)
http://example.com/api/params?name=hello&data=hello
根据网址格式:
特别地,对查询字符串进行编码使用以下规则:
因此 array[]
不会符合预期,将根据规则自动替换:
如果您建立一个网址,例如:
`Build URL: http://example.com/api/add.json?name='hello'&data[]='hello'&data[]='world'`
输出将是:
>>> payload = {'name': 'hello', "data[]": 'hello','data[]':'world'}
>>> r = requests.get("http://example.com/api/params", params=payload)
>>> r.url
u'http://example.com/api/params?data%5B%5D=world&name=hello'
这是因为复制将被url中键的最后一个值data[]
替换,并将被替换data%5B%5D
。
如果data%5B%5D
不是问题(如果服务器能够正确解析),那么您可以继续进行。