Reputation: 7653
My code in 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"]
My 'text' may contain some special characters so I want to do url encoding, as shown above. However, for one testing example, if I don't use this line:
text = urllib.parse.quote_plus(text)
I can get the expected result. Otherwise, I can't. So i suspect my way of using url encoding is wrong. What's wrong exactly?
One example of the text could be '#Thisisgreat#, yes!'
Upvotes: 0
Views: 792
Reputation: 6217
Requests does the encoding for you, so you don't need to do it manually. So you should remove the line text = urllib.parse.quote_plus(text)
.
Upvotes: 1
Reputation: 18
As stated in the request docs (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.
So you do not need to parse the text manually. Doing so may "double parse" it.
Upvotes: 0