python为什么要更改原始参数

python为什么要更改原始参数,python,python-requests,Python,Python Requests,我想发送http请求,但参数有问题,以下是我的代码: my_url="mysite.com/api" payload = {'start':"2017-04-01%2000:00:00",'end':"017-04-01%2023:59:59"} r=requests.get(my_url,params=payload) print r.request.url 发送的url是“mysite.com/api?start=2017-04-01%252000%3A00%3A00&end=2017-0

我想发送http请求,但参数有问题,以下是我的代码:

my_url="mysite.com/api"
payload = {'start':"2017-04-01%2000:00:00",'end':"017-04-01%2023:59:59"}
r=requests.get(my_url,params=payload)
print r.request.url

发送的url是“mysite.com/api?start=2017-04-01%252000%3A00%3A00&end=2017-04-01%252023%3A59%3A59”,参数已更改。有人能帮我吗?

Python是为您编码信息的url。在HTTP传输过程中不允许使用某些字符(因为它们在协议中具有特定功能)。如果您想使用非法字符,如
(空格),则可以将其URL编码到
%3A
%20
。URL编码是标准化的,因此您可以发送信息(后编码),然后服务器将接收并解码,从而使它们接收到您的原始消息

下面是一个更深入的分析:

您试图将直接url与库对url的解释结合起来。您试图发送的确切get请求是什么?我修改了参数,如payload={'start':“2017-04-01%252000%3A00%3A00”,“end':“017-04-01%252023%3A59%3A59”},仍然无法工作请求将自动编码特殊字符,我通过手动取消其引号,然后重新发送请求来解决此问题