使用python请求将XML文件发送到rest API

时间:2014-08-01 15:50:26

标签: python api python-requests

我正在尝试使用rest api POST发送XML文件。 api接受xml并创建一个新的权利。

我正在尝试打开该文件,然后通过请求发送它。

filename = 'test.xml'

response = requests.post(api_url, data=json.dumps(open(filename).readlines()))

但是获得503(API无法获得正确的输入)。我的目的是将这个XML发送到api。

如果我不做json.dumps,我会得到ValueError: too many values to unpack

2 个答案:

答案 0 :(得分:1)

您的API采用XML而不是JSON。当您说data = json.dumps(...)时,您正在将JSON传递给您的API。这是您的第一条错误消息的原因 - 503(API无法获得正确的输入)。

requests.post()将以太字典,字符串或类文件对象作为其data=参数。当你执行data = foo.readlines()时,你传入的是一个列表(既不是字符串也不是字典。这就是你的第二条错误消息的原因 - " ValueError:太多的值要解包"

在不知道您的API的情况下,很难猜出什么是正确的。话虽如此,试试这个:

filename = 'test.xml'
response = requests.post(api_url, data=open(filename).read())

或者,差不多等同于:

filename = 'test.xml'
response = requests.post(api_url, data=open(filename))

答案 1 :(得分:0)

我认为问题是,您正在尝试将xml文件直接转换为json数据(使用json.dumps())并发布。我想API接受JSON。然后首先尝试将xml文件转换为python字典/适合它的任何数据结构。然后将其转换为json。