gpt4 book ai didi

python - 如何防止 python 请求对我的 URL 进行百分比编码?

转载 作者:IT老高 更新时间:2023-10-28 22:17:21 25 4
gpt4 key购买 nike

我正在尝试在 python 中使用 requests.get() 获取以下格式的 URL:

http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel

#!/usr/local/bin/python

import requests

print(requests.__versiom__)
url = 'http://api.example.com/export/'
payload = {'format': 'json', 'key': 'site:dummy+type:example+group:wheel'}
r = requests.get(url, params=payload)
print(r.url)

但是,URL 被百分比编码,我没有得到预期的响应。

2.2.1
http://api.example.com/export/?key=site%3Adummy%2Btype%3Aexample%2Bgroup%3Awheel&format=json

如果我直接传递 URL,这将有效:

url = http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel
r = requests.get(url)

有没有办法以原始形式传递参数 - 没有百分比编码?

谢谢!

最佳答案

这不是很好的解决方案,但你可以直接使用 string:

r = requests.get(url, params='format=json&key=site:dummy+type:example+group:wheel')

顺便说一句:

payload 转换为该字符串的代码

payload = {
'format': 'json',
'key': 'site:dummy+type:example+group:wheel'
}

payload_str = "&".join("%s=%s" % (k,v) for k,v in payload.items())
# 'format=json&key=site:dummy+type:example+group:wheel'

r = requests.get(url, params=payload_str)

编辑(2020 年):

您也可以使用 urllib.parse.urlencode(...) 和参数 safe=':+' 来创建字符串而不转换字符 :+ .

据我所知 requests 也为此使用 urllib.parse.urlencode(...) 但没有 safe=

import requests
import urllib.parse

payload = {
'format': 'json',
'key': 'site:dummy+type:example+group:wheel'
}

payload_str = urllib.parse.urlencode(payload, safe=':+')
# 'format=json&key=site:dummy+type:example+group:wheel'

url = 'https://httpbin.org/get'

r = requests.get(url, params=payload_str)

print(r.text)

我使用了页面 https://httpbin.org/get测试一下。

关于python - 如何防止 python 请求对我的 URL 进行百分比编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com