我正在向內部系統發送HTTP分塊請求。我已經確認其他因素不能確保我可以發送沒有塊編碼的小消息。HttpServletRequest.getInputStream()不解開分塊的HTTP請求
我的過程基本上是將Transfer-Encoding
標題更改爲chunked
,並且我刪除了Content-Length
標題。此外,我正在使用內部已經存在相當一段時間的內部ChunkedOutputStream
。
我能夠連接,獲取輸出流併發送數據。收件人然後返回一個200
響應,看起來該請求已收到併成功處理。端點接收HTTP請求,並將數據直接傳輸到表中(使用HttpServletRequest.getInputStream()
)。
在檢查流式數據時,我可以看到流中的塊編碼信息沒有被Tomcat容器自動解包/解碼。我一直在搜尋Tomcat HTTPConnector
文檔,找不到任何暗示分塊編碼的內容w.r.如何在HttpServlet
內處理塊編碼消息。我看不到其他StackOverflow問題,因此我懷疑我缺少一些基本的東西。
我的問題歸結爲:
- 的Tomcat是否應自動從我的要求解碼分塊編碼,並給我一個「乾淨」
InputStream
當我打電話HttpServletRequest.getInputStream()
? - 如果是,是否需要更新配置才能啓用此功能?我是否在標題中發送了錯誤信息,導致它返回未解碼的流?
- 如果否,當
Transfer-Encoding
標題存在時,是否將輸入流換行爲ChunkedInputStream或類似的東西?
他們應該使用'HttpURLConnection'。它已經內置了分塊。我不知道爲什麼人們不斷重新發明輪子。 – EJP
完全同意。真的,這是我的一個明顯的疏忽。遺留系統已有15年以上的歷史,所以我並不感到驚訝,但事情並不理想,但我應該注意到。 –