我在使用请求模块发送put时遇到问题。我已经能够成功获得并使用Chrome的Advanced Rest Client我已验证我的有效负载是否正确。但是,我收到一个通用错误,说我发送了一个错误的请求。我是Web服务调用的新手,我不确定我所做的事情是完全错误的,但这正是我的尝试:
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)
我知道100%的XML,URL和凭据是正确的,那么为什么上述工作不正常呢?我能想到的唯一一件事就是有效载荷的关键需要特定的东西,但我不确定这是否正确或如何弄清楚它应该是什么......
响应是“HTTP状态400 - 错误请求”
答案 0 :(得分:2)
在深入研究Quick Start Guide之后,我发现了这个有趣的信息:
您希望多次发送未经表单编码的数据。如果传入字符串而不是dict,则会直接发布该数据。
我原本试过这个,但显然我有一个错字,因为我得到的错误表明我需要通过一个字典。
无论如何,传入直接的XML而不是字典已经解决了这个问题。