Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用python请求模块发送“多部分/表单数据”请求_Java_Python_Spring_Python Requests - Fatal编程技术网

Java 无法使用python请求模块发送“多部分/表单数据”请求

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

我有一个JavaSpring服务器,它要求发送到服务器的请求的
内容类型为
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的常规有效负载,而不是多部分负载——这是邮递员首先要改变的。