使用请求将字符串作为multipart/formdata发布

2024-04-26 04:57:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我发布到一个API,它似乎坚持接收XML数据作为名为(文件名?)的多部分/表单数据xml。它可以在postman中工作,但我无法使用Python的请求使其工作。这是我的Python代码(基于https://stackoverflow.com/a/24443309/1011724):

requests.post(callpro_url,
              files={'xml':('data.xml',result)},
              verify=False).text

其中result是一个包含XML的字符串。如果我尝试这个代码,我得到的答复是:

xml post field is empty

如果这是一个多部分的数据,那么就不要使用它。在

如果我从正在工作的邮递员帖子中生成代码,我会得到这样的结果(稍微修改):

^{pr2}$

在Python中执行这段代码,它会给出正确的响应。在

注意,邮递员代码中的params=querystring部分在我的代码中的URL中处理。在

我被邮递员代码里的有效载荷搞糊涂了。它在字符串中添加内容处理和名称等内容。我假设我可以把这些东西放在files参数的元组中,但我不知道如何做。我试过files={'xml':('data.xml',result,'form-data')}和{}和{}。在

另外,postman代码将头显式定义为

 'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"

requests documentation则说我永远不应该以这种方式显式定义头。但是邮递员代码有效,而我的代码不行。在

有什么建议吗?在


Tags: 数据字符串代码form内容邮递员data定义
1条回答
网友
1楼 · 发布于 2024-04-26 04:57:06

我不知道这是否值得回答,或者我是否应该删除这个问题,但需要的是将文件命名为"xml"而不是xml。所以这是可行的:

requests.post(callpro_url,
              files={'xml':('"xml"',result)},
              verify=False).text

相关问题 更多 >