Java 具有多个文件的多部分/表单数据请求:由于奇数字节序列,请求似乎被篡改

Java 具有多个文件的多部分/表单数据请求:由于奇数字节序列,请求似乎被篡改,java,file-upload,multipartform-data,Java,File Upload,Multipartform Data,我们需要发送一个包含两个文件的multipart/formdata请求。因为我们对请求有一些问题,所以我们设置了一个请求bin页面来尝试分析请求本身,因为Postman似乎工作得很好 我的第二个文件由另一个服务以字节流的形式生成,代表一个JSON对象。该字节流的末尾似乎有一个NUL(0)字节终止符 如果我将第二个文件添加到multipart/form data请求中,结果如下: 身体如下所示: --9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6. Content-Di

我们需要发送一个包含两个文件的
multipart/formdata
请求。因为我们对请求有一些问题,所以我们设置了一个请求bin页面来尝试分析请求本身,因为Postman似乎工作得很好

我的第二个文件由另一个服务以字节流的形式生成,代表一个
JSON
对象。该字节流的末尾似乎有一个
NUL
(0)字节终止符

如果我将第二个文件添加到
multipart/form data
请求中,结果如下:

身体如下所示:

--9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6.
Content-Disposition: form-data; name="metadata"; filename="metadata-1584981615.json".
Content-Type: application/json.
Content-Length: 581.
.
{"...":"..."}.
--9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6.
Content-Disposition: form-data; name="file"; filename="file-1584981615.json".
Content-Type: application/json.
Content-Length: 12205.
.
{"...":"..."}..
--9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6--.
显然,这是极其无效的。似乎
多部分
请求正在每行末尾添加
字符

我能够通过
SpringWeb5.1.5.RELEASE
OKHTTP3.14.7
ApacheHttpComponents 4.5.7
重现这种行为如果我从字节流中删除
NUL
(0)字节终止符,行为似乎不会改变。

奇怪的是:接收Web服务器将此请求作为有效的
多部分/表单数据
请求接受

请注意,以下是从请求bin的角度(不同的
文件
)来看的有效请求(也被Web服务器接受)的外观:

除了在末尾有显式终止符(这似乎根本没有什么区别),字节流看起来没有中断<代码>新字符串(字节)
提供有效的
JSON
对象。所以我想一定是别的原因

以前有人遇到过这个问题吗?我不确定如何继续调试这个问题,而且我相当肯定发送不正确的请求,即使远程服务器此时可能会接受它们,几乎肯定会保证我的代码会在某个地方出错

--83611e7f-ad57-4893-9d1b-5ba2c4543d2a
Content-Disposition: form-data; name="metadata"; filename="metadata-1584982345.json"
Content-Type: application/json
Content-Length: 895

{"...": "..."}

--83611e7f-ad57-4893-9d1b-5ba2c4543d2a
Content-Disposition: form-data; name="file"; filename="file-1584982345.json"
Content-Type: application/json
Content-Length: 9868

{"...": "..."}
--83611e7f-ad57-4893-9d1b-5ba2c4543d2a--