为什么我的 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)
.
我的代码在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)
.