我正在使用Kenneth Retiz的优秀请求包来发出网络请求。 Requests Github repository
有时我需要传递逗号分隔的参数,但逗号不是url编码的,即我的网址看起来像这样
http://example.site.com/customers?fields=id,first_name,last_name
我无法弄清楚如何将查询参数格式化为这样。逗号总是被转义为%2C。
我尝试了以下代码,但这不起作用:
params['fields'] = 'id,first_name,last_name'
url = 'http://example.site.com/customers'
ex = requests.get(url, params = params)
感谢。
答案 0 :(得分:2)
当您说“我的网址看起来像这样:http://example.site.com/customers?fields=id,first_name,last_name
”时,我认为您的意思是您的网址在浏览器中的样子。关于浏览器如何向您显示URL的重要一点是,为了便于阅读,他们将对URL进行编码以进行显示,但是当您访问该URL时,他们实际上会发送编码版本。
正如Rob已经在你的问题评论中提到的那样,没有充分的理由发送逗号未编码,但这并不意味着Requests不允许这样做,这只会让它变得非常困难。
有了强烈的警告,有办法做你想做的事:
from requests import Session, Request
request = Request('GET', 'https://httpbin.org/get')
prepared = request.prepare()
prepared.url += '?field=id,first_name,last_name'
session = Session()
response = session.send(prepared)
这非常容易出错,因为您在没有准确检查任何内容的情况下添加自己的参数,但这可以帮助您实现您在问题中提出的要求。它会为您执行正确的事情的请求,并允许您执行您想要的操作。但是,我强烈建议您在高级文档中阅读更多内容,了解如何实现您可能期望的一般请求API,如流式传输,证书验证等。