我在使用请求模块发送 put 时遇到问题。我已经能够成功获取并使用 Chrome 的高级 Rest 客户端,我已经验证了我的有效负载是正确的。但是,我收到一个一般错误,说我发送了错误的请求。我是网络服务调用的新手,我不确定我所做的是否完全错误,但这就是我正在尝试的:
import requests
payload = {'payload': '<request>some request xml</request>'}
headers = {'content-type': 'application/xml'}
r = requests.put('https://the.url', data=payload, auth=HTTPBasicAuth('user', 'password'), headers=headers)
我知道 XML、URL 和凭证 100% 正确,为什么上面的方法不起作用?我唯一能想到的是有效负载的 key 需要是特定的,但我不确定这是否正确或如何弄清楚它应该是什么......
响应是“HTTP 状态 400 - 错误请求”
最佳答案
深入研究 Quick Start Guide 后我发现了一些信息:
There are many times that you want to send data that is not form-encoded. If you pass in a string instead of a dict, that data will be posted directly.
我最初确实尝试过这个,但显然我有一个拼写错误,因为我收到的错误表明我需要传递一个字典。
无论如何,传递直接的 XML 而不是字典已经解决了这个问题。
关于Python请求模块Put问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386097/