当前位置: 首页 > 面试题库 >

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

段干靖
2023-03-14
问题内容

我正在尝试使用python中的request.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 = {'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)


 类似资料:
  • 问题内容: 我正在尝试通过GET请求中的URL参数传递API密钥。 但是,我注意到在发送请求时,Axios会在我的API密钥中对字符进行编码。这会导致API拒绝我的请求,因为它无法识别我的密钥。 如何防止Axios对我的GET参数进行编码? 问题答案: 您可以使用自定义参数序列化器,如下所示: 可以在实例级别设置: 或在全球范围内: 另一个选择是将api键直接添加到URL: 您可以使用`param

  • 我试图通过参数在谷歌搜索,它的工作,当我搜索一个词,但一个我做空间它坏了我知道有一种方法来编码网址。 回溯: 还有一次,我用希伯来文写道: UnicodeEncodeError:“ascii”编解码器无法对位置14-18中的字符进行编码:序号不在范围内(128)

  • 如何对字符串进行百分比编码,如RFC 3986中所述?也就是说,我不想(依我看,很奇怪)对www url表单进行编码,因为这是不同的。 如果重要的话,我正在编码的数据不一定是一个完整的URL。

  • 问题内容: 我有一个需要大量内存的程序,例如所有物理内存的2/3。运行一段时间后,我的操作系统开始将程序交换为hdd。但是我需要程序始终保持非常快的响应,因此我需要防止对该进程进行分页。 如何防止操作系统交换一个进程? 谢谢你的帮助! 问题答案: 在程序开始时,调用: (如果您没有该程序的源代码,则必须使用该程序来减少进程的消耗)。 请注意,这将增加进程失败进行内存分配的机会。

  • 我们的代码使用Asyncresttemplate如下所示

  • 我想为我的网站创建一个编码的网址。例如,对于这个URL:"http://google.com/index.html" 我想通过URL编码将此URL提供给客户端。