Python请求模块Put问题

标签 python python-2.7 http-request python-requests

我在使用请求模块发送 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/

相关文章:

javascript - 如何通过 Python 使用 GhostDriver 处理警报?

python - 删除 numpy 数组末尾的 dtype

Python Bottle如何读取请求参数

java - 服务器 415 响应代码

android - android 中的 httprequest 失败并且异常为空

python - 如何调试 py2exe 'application failed to initialize properly' 错误?

python - 在 Google App Engine 上创建大量数据存储对象的最节省内存的方法是什么?

Python:以时间为优先级的优先级队列

python - numpy.genfromtxt 和 numpy.loadtxt 的区别,以及 Unpack

python - 将外部提供的缓冲区复制到字节的最有效方法是什么