首页 > 解决方案 > Python requests 选项将参数转换为“&”

问题描述

我正在尝试在 requests.get() 上设置参数,该 url 将 & 设置为 & 并且该网站似乎拒绝了该请求。

这是我的示例代码:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url)
https://httpbin.org/get?key1=value1&key2=value2

期待:

https://httpbin.org/get?key1=value1&key2=value2

标签: pythonpython-requests

解决方案


我的请求库的设置和版本并没有按照您所说的设置正在执行的操作。当我运行您的代码时,我得到的输出是:

https://httpbin.org/get?key1=value1&key2=value2

特别有趣的是,这个示例代码直接来自库自己的文档:

https://requests.readthedocs.io/en/master/user/quickstart/#passing-parameters-in-urls

就在那里,他们展示了你应该从这段代码中得到什么:

>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1

有点奇怪的是,在他们的版本中,两个参数的顺序是颠倒的,但是由于 map 意味着它的内容没有顺序,我认为没关系。否则,这与我得到的相同...没有编码的&符号。

那么为什么你得到一个带有 & 编码的结果,我不能说,但似乎不知何故,你的配置不同于通常的结果,因为你得到的结果不是通常的结果。


推荐阅读