我正在向内部系统发送HTTP分块请求。通过确保我可以发送没有块编码的小邮件,我确认其他因素没有发挥作用。
我的流程基本上是将Transfer-Encoding
标题更改为chunked
,并且我已删除Content-Length
标题。另外,我正在使用内部ChunkedOutputStream
已经存在很长时间了。
我能够连接,获取输出流并发送数据。然后,收件人返回200
响应,以便看到请求已收到并成功处理。端点接收HTTP请求,并将数据直接流式传输到表中(使用HttpServletRequest.getInputStream()
)。
在检查流数据时,我可以看到流中的块编码信息尚未被Tomcat容器自动解包/解码。我一直在搜索Tomcat HTTPConnector
文档,并且无法找到任何暗示分块编码的内容w.r.t如何在HttpServlet
内处理块编码消息。我无法查看其他StackOverflow问题,因此我怀疑我遗漏了一些基本的东西。
我的问题归结为:
InputStream
时,HttpServletRequest.getInputStream()
?Transfer-Encoding
标题出现时将输入流包装在ChunkedInputStream或类似内容中吗?答案 0 :(得分:0)
这已经解决了。正如所料,这是我的基本情况。
我使用的遗留系统提供了手动方法,以简化打开HTTP连接,发送标头然后使用OutputStream通过POST发送内容的过程。我没有意识到,而且它处于一个相当模糊的位置,但幕后的帮助者我们正在确定我不指定一个{{ 1}}因此添加了Content-Length
标头并将OutputStream包装在TRANSFER_ENCODING=chunked
中。这导致我对内容进行双重编码,因此我的端点(貌似)无法对其进行解码。
案件结案。