背景
python的requests库发送GET请求时,会自动将参数进行转义,比如:":"变为"%3A",如果服务方希望接收到原始字符才能进行处理,那就需要参数保持原样传递了。
代码演示
- 正常GET请求的参数输出
import requests as req
url = "127.0.0.1:28080/xxx/api/v1/flush"
d = {
"data": "ddd.ha.com/@233.html",
"version": 1723113400000001
}
r = req.get(url, params=d)
print(r.url)
### 结果:
### 127.0.0.1:28080/xxx/api/v1/flush?data=ddd.ha.com%2F%40233.html&version=1723113400000001
- 去除转义后的请求代码
import requests as req
from urllib.parse import urlencode
url = "127.0.0.1:28080/xxx/api/v1/flush"
d = {
"data": "ddd.ha.com/@233.html",
"version": 1723113400000001
}
d = urlencode(d, safe=":/@")
r = req.get(url, params=d)
print(r.url)
### 结果:
### 127.0.0.1:28080/xxx/api/v1/flush?data=ddd.ha.com/@233.html&version=1723113400000001