我正在尝试使用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
答案 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。