2

我在使用 requests 模块发送 put 时遇到问题。我已经能够成功获取并使用适用于 Chrome 的 Advanced Rest Client 我已验证我的有效负载是正确的。但是,我收到一个通用错误,说我发送了一个错误的请求。我是网络服务调用的新手,我不确定我所做的是否完全错误,但这是我正在尝试的:

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 - 错误请求”

4

1 回答 1

2

在深入研究快速入门指南后,我发现了以下信息:

很多时候,您希望发送未进行表单编码的数据。如果您传入一个字符串而不是一个字典,则该数据将直接发布。

我最初确实尝试过,但显然我有一个错字,因为我得到的错误表明我需要传入一个字典。

无论如何,直接传递 XML 而不是字典已经解决了这个问题。

于 2012-02-22T17:08:39.727 回答