gpt4 book ai didi

python - 在 python3 请求中传递参数而不转义

转载 作者:行者123 更新时间:2023-11-28 17:43:40 24 4
gpt4 key购买 nike

我正在使用 Kenneth Retiz 提供的优秀请求包来发出网络请求。 Requests Github repository

有时我需要传入逗号分隔的参数,但逗号不是 url 编码的,即我的 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)

谢谢。

最佳答案

当您说“我的 url 看起来像这样: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 获得的所有其他内容,如流式传输、证书验证等。

关于python - 在 python3 请求中传递参数而不转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com