xda*_*iel 3 python post request python-requests postman
这是我在python中需要的post请求的目标:
我得到了 XML 文件、url 和身份验证令牌。根据 xml 文件,我从服务器返回 xml 响应。
req = requests.post(url='http://abc123.com/index.php/plan/', \
headers={'auth-token': 'abCdeFgh'}, \
data={'data': open('sample_plan.xml', 'rb')})
Run Code Online (Sandbox Code Playgroud)
Post 请求状态码为 200,但 xml 响应中有错误,如“ <error>invalid XML for request</error>”。据说在我的 post 请求中 xml 文件填写了错误的参数。但是在另一个工具中 - Postman - https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en?它以正确的 xml 响应工作并成功。我在邮递员中有什么:
在标题中: 键:身份验证令牌值:abCdeFgh
在正文中:选择了表单数据选项。 键:数据值:选择了sample_plan.xml 文件。
post 请求的参数目标(所有参数都是必需的): 1. 在标头中 - Authentication-Token 2. 在正文中 - 名称/内容 ID = 数据的 XML 文件
我应该将post请求的文件放入哪个参数?我已经尝试了几乎所有的东西——基于 python-requests 文档......
谢谢你的帮助!
经过几个小时的尝试,我得到了它!
正确的参数是文件,并且必须有带有 3 个参数的元组值的“数据”键。否则它无法正常工作......
从请求文档中,我使用文件参数进行多部分编码上传http://docs.python-requests.org/en/master/api/ 和键“数据”,我被 + 3 元组的值(“文件名” , 文件对象, 'content_type')
因此,我的问题的答案是(也使用 'with' 关键字,以便在套件完成后正确关闭文件)
with open('sample_plan.xml', 'rb') as payload:
headers = {'auth-token': 'abCdeFgh'}
files = {'data': ('sample_plan.xml', payload, 'text/xml')}
req = requests.post(url='http://abc123.com/index.php/plan/', \
headers=headers, files=files)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3754 次 |
| 最近记录: |