0

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

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

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

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

任何想法都非常感谢

C

4

2 回答 2

1

你看到的是一个完美的行为。参数必须根据架构进行编码

http://en.wikipedia.org/wiki/URL-Encoding

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

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

于 2013-09-27T14:17:58.360 回答
1

在这种情况下,它不是参数,而是 PUT 数据。我通过使用解决了这个问题

payload = json.dumps({"host": "tst123:3306"})                                 
headers = {'content-type': 'application/json'}                                
r = requests.put(url, data=payload, headers=headers)

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

于 2013-09-27T14:24:39.353 回答