POST请求文件python-requests

时间:2017-08-31 11:29:04

标签: python post request python-requests postman

这是我在python中需要的帖子请求的目标:

我有XML文件,网址和身份验证令牌。根据xml文件,我从服务器返回xml响应。

req = requests.post(url='http://abc123.com/index.php/plan/', \     
            headers={'auth-token': 'abCdeFgh'}, \
            data={'data': open('sample_plan.xml', 'rb')})

发布请求状态代码为200,但xml响应中存在错误,例如“<error>invalid XML for request</error>”。据说我的帖子请求中的xml文件填入了错误的参数。 但在另一个工具 - Postman - https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en?它的工作原理和正确的xml响应成功。我在Postman的所作所为:

    标题中的
  • 密钥:身份验证令牌:abCdeFgh

  • 身体中的
  • : 表格数据选项选择.. 密钥:数据:选择了sample_plan.xml文件..

  

发布请求的参数目标(所有参数都是必需的):   1.标题 - Authentication-Token   2. in body - 名称为/ contentID = data

的XML文件

我应该将post请求的文件放入哪个参数?我已经尝试了几乎所有东西 - 基于python请求文档......

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

经过几个小时的尝试,我得到了它!

正确的参数是文件,必须有'data'键,其值为3个参数的元组。否则它无法正常运作......

从请求文档中我使用 files 参数进行多部分编码上传http://docs.python-requests.org/en/master/api/ 使用密钥'数据',我强烈要求+ 3元组的值('filename',fileobj,'content_type')

因此我的问题的答案是(也使用'with'关键字,因此文件在套件完成后正确关闭)

vim