我有 Java spring 服务器,要求发送到服务器的请求的 Content-Type
为 multipart/form-data
。
我可以使用postman正确向服务器发送请求:
但是,当尝试使用 python3 中的 requests
模块发送请求时,我收到 The current request is not a multipart request
错误。
我的Python代码是:
import requests
headers = {
'Authorization': 'Bearer auth_token'
}
data = {
'myKey': 'myValue'
}
response = requests.post('http://127.0.0.1:8080/apiUrl', data=data, headers=headers)
print(response.text)
如果我将 'Content-Type': 'multipart/form-data'
添加到请求的 header ,则错误消息将变为 Could not parse multipart servlet request;嵌套异常为 org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为未找到多部分边界
。
如何发出与 postman 使用 python 发送的请求相同的请求?
最佳答案
requests
的作者认为这种情况不是 pythonic,因此 requests
本身不支持这种用法。
您需要使用 requests_toolbelt
,它是由 requests 核心开发团队 doc 的成员维护的扩展。 ,例如:
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
m = MultipartEncoder(
fields={'field0': 'value', 'field1': 'value',
'field2': ('filename', open('file.py', 'rb'), 'text/plain')}
)
r = requests.post('http://httpbin.org/post', data=m,
headers={'Content-Type': m.content_type})
关于java - 无法使用 python requests 模块发送 `multipart/form-data` 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034490/