为什么我的 url 编码器无法处理 http 请求?

Why is my url encoder not working for http requests?

我的代码在Python3:

import requests

URL = "http://xxx.xxx.com/querytext"

try:
    text = urllib.parse.quote_plus(text)
    r = requests.get(URL, params={"text": text}, auth=("guest", "1234"))
    r_json = r.json()
except Exception:
    return None

tag_results = r_json["data"]["result"]

我的'text'可能包含一些特殊字符所以我想做url编码,如上图。但是,对于一个测试示例,如果我不使用这一行:

text = urllib.parse.quote_plus(text)

我可以得到预期的结果。否则,我做不到。所以我怀疑我使用 url 编码的方式是错误的。具体怎么了?

文本的一个示例可以是“#Thisisgreat#,是的!”

如请求文档中所述 (https://docs.python-requests.org/en/latest/):

Requests allows you to send HTTP/1.1 requests extremely easily. There’s no need to manually add query strings to your URLs, or to form-encode your POST data. Keep-alive and HTTP connection pooling are 100% automatic, thanks to urllib3.

因此您不需要手动解析文本。这样做可能会“双重解析”它。

请求does the encoding for you,因此您无需手动执行。所以你应该删除行 text = urllib.parse.quote_plus(text).