Python requests API请求中的强制编码周期

Python requests API请求中的强制编码周期,python-requests,Python Requests,我试图使用一个不能正确处理句点的RESTAPI 它会失败的 但当周期编码为%2E时,它工作正常,因此: 很好 尽管我可能会尝试,但在使用请求时%2E似乎总是被转换回“.” 有什么方法可以避免这种行为吗?您可以使用它来工作,因为默认情况下,请求将使用Requests.util中的requote_uri(uri)函数来帮助您取消无保留字符的引号。如果您已经自己解析并准备好URL,则可以执行以下操作并覆盖URL字段: 来自请求导入会话,请求 s=会话() req=请求('GET','http://l

我试图使用一个不能正确处理句点的RESTAPI

它会失败的

但当周期编码为%2E时,它工作正常,因此:

很好

尽管我可能会尝试,但在使用请求时%2E似乎总是被转换回“.”

有什么方法可以避免这种行为吗?

您可以使用它来工作,因为默认情况下,请求将使用
Requests.util
中的
requote_uri(uri)
函数来帮助您取消无保留字符的引号。如果您已经自己解析并准备好URL,则可以执行以下操作并覆盖
URL
字段:

来自请求导入会话,请求
s=会话()
req=请求('GET','http://localhost:8008?name=kevin%2Eemckinsey')
#这将使用'requote_uri'取消无保留字符的引号,以便%2E成为一个'`
prepped=req.prepare()
#强制“url”字段成为我们指定的url。
prepped.url=http://localhost:8008?name=kevin%2Emckinsey'
resp=s.send(预处理)
打印(分别为url)
打印(resp.json())
# http://localhost:8008?name=kevin%2Emckinsey
#PHP的$\u服务器['REQUEST\u URI']返回:
#{'name':'/?name=kevin%2e麦肯锡'}

对我来说,这似乎是一个肮脏的把戏,但无论如何,没有办法告诉请求不要取消引用某个特定字符。

谢谢!这确实解决了这个问题。