不需要的字符串格式

时间:2013-09-27 14:08:18

标签: python python-requests

非常快的问题。当使用请求发送PUT时,我发送以下内容:

payload = {"host": "tst123:3306"}
r = requests.put(url, data=payload)

请求似乎是格式化主机字符串,因此api正在接收'tst123%3A3306'

有没有办法阻止这种情况?

非常感谢任何想法

C

2 个答案:

答案 0 :(得分:1)

你看到的是一种完美的行为。必须根据模式

对参数进行编码
http://en.wikipedia.org/wiki/URL-Encoding

自网络早期以来,这是众所周知的最佳实践。

在应用程序端,您必须自己解码参数。每种编程语言都有模块。在大多数情况下,所有的Web框架都应该在内部进行解码。

答案 1 :(得分:1)

在这种情况下,它不是params而是PUT数据。我通过使用

解决了这个问题
payload = json.dumps({"host": "tst123:3306"})                                 
headers = {'content-type': 'application/json'}                                
r = requests.put(url, data=payload, headers=headers)

我能理解为什么需要对url参数进行编码,但为什么要使用PUT数据?