[英]Java servlet can't receive the parts of an http post multipart request
[英]Java: Receive a multipart HTTP response
我正在編寫一個 Java 客戶端應用程序來接收來自 IP 相機的實時 M-JPEG 視頻。 視頻作為無休止的多部分 HTTP 消息由相機發送,其中每個部分都是一個 JPEG 幀。 我需要在這些幀到達時對其進行處理,因此我希望有一種方法可以發出 HTTP 請求,該請求在接收到每個消息部分/視頻幀時異步觸發事件。
有人知道任何可以做到這一點的圖書館嗎? 我可以在 Google 上找到的所有示例都不起作用,因為它們使用阻塞調用,這些調用僅解析響應並在收到整個響應后將其分解為多個部分(這顯然不適用於無休止的響應)。
我意識到我可以在數據到達時通過搜索消息邊界手動將其分解為多個部分,但感覺就像我在重新發明輪子一樣。
這個項目: http : //fmj-sf.net ,確實有一個解析multipart / x-mixed-replace響應的類: http : //fmj-sf.net/doc/fmj/net/sf/fmj/media/解析器/ MultipartMixedReplaceParser.html
搜索谷歌代碼:multipart / x-mixed-replace lang:java
我找到了一些其他示例,例如: http : //www.google.com/codesearch?as_q = manypart%2Fx- mixed-replace& btnG = Search + Code& hl = en&as_lang = java&as_license_restrict = i&as_license =& as_package =& _ as_filename =& _ as_case =
從Apache Commons嘗試HttpClient。 源代碼有幾個類,顯示如何以流方式讀取多部分。
由於問題和現有答案有點舊,我想建議一個更新的答案。
現在有Spring Webflux項目。 您的用例可以很容易地以反應方式實現。 因此,在您的情況下, class MultipartHttpMessageReader將完成所有繁重的工作。
如果它的行為不完全符合您的需要,您可以輕松擴展它並根據自己的喜好覆蓋方法。 然后可以將您的自定義 Reader 注冊為 bean,如下所示:
@Configuration
public class MultipartMessageConverterConfiguration {
@Bean
public CodecCustomizer myCustomMultipartHttpMessageWriter() {
return configurer -> configurer.customCodecs()
.register(new MyCustomMultipartHttpMessageWriter());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.