Java 无法使用python请求模块发送“多部分/表单数据”请求
我有一个JavaSpring服务器,它要求发送到服务器的请求的Java 无法使用python请求模块发送“多部分/表单数据”请求,java,python,spring,python-requests,Java,Python,Spring,Python Requests,我有一个JavaSpring服务器,它要求发送到服务器的请求的内容类型为multipart/formdata 我可以通过邮递员向服务器正确发送请求: 但是,当我尝试使用python3中的requests模块发送请求时,我发现当前请求不是一个多部分请求 我的python代码是: import requests headers = { 'Authorization': 'Bearer auth_token' } data = { 'myKey': 'myValue' } respo
内容类型为multipart/formdata
我可以通过邮递员向服务器正确发送请求:
但是,当我尝试使用python3中的requests
模块发送请求时,我发现当前请求不是一个多部分请求
我的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'
添加到请求的头部,则错误消息将变成无法解析多部分servlet请求;嵌套异常为org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为未找到多部分边界
如何使用python发出与邮差发送相同的请求?请求
的作者认为这种情况不是pythonic的,因此请求
本机不支持这种用法
您需要使用requests\u toolbelt
,它是requests核心开发团队成员维护的扩展,例如:
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})
可能重复:@blhsing我没有发送文件。我发送文本。那么如果你不是真的发送文件,那么使用'Content-Type':'multipart/form data'
有什么意义呢?@dmitryro我也想回答你的问题。但是服务器是多年前由我公司的其他人设计的。而那个人已经离开了公司。然后,可能发送请求的方式必须改变,因此它将是一个带有POST的常规有效负载,而不是多部分负载——这是邮递员首先要改变的。