Python 请求发送带有表单数据输入的 POST 请求

Sel*_*mar 5 python rest attachment form-data python-requests

我有一个向系统发送请求的 API,我们将正文请求作为表单数据选项发送。

  1. 键:文档,值:sample.doc,类型:文件
  2. 键:请求,值:{“数据”:{“数字”:“17329937082”,“格式”:“MSW”}},类型:文本

如何使用 Requests 在 Pyhton 脚本中实现这一点。这在 Postman 中有效,我正在尝试使用 python 脚本调用此 API。

C.N*_*ivs 5

对于表单编码数据,您需要将datakwarg 与字典而不是字符串配对。为了演示这是如何工作的,我将使用该requests.Request对象:

from requests import Request
import json

request_dict = {'Data': {'Number': "17329937082", "Format": "MSW"}}

data = {
    'Document': open('sample.doc', 'rb'),   # open in bytes-mode
    'Request': json.dumps(request_dict)     # formats the dict to json text
}

r = Request('GET', 'https://my-url.com', data=data)
req = r.prepare()

r.headers
{'Content-Length': '80595', 'Content-Type': 'application/x-www-form-urlencoded'}
Run Code Online (Sandbox Code Playgroud)

所以在正常的请求中,它看起来像:

import requests
import json

request_dict = {'Data': {'Number': "17329937082", "Format": "MSW"}}

data = {
    'Document': open('sample.doc', 'rb'),   # open in bytes-mode
    'Request': json.dumps(request_dict)     # formats the dict to json text
}

r = requests.get('my_url.com', data=data)
Run Code Online (Sandbox Code Playgroud)