簡體   English   中英

Java:接收多部分 HTTP 響應

[英]Java: Receive a multipart HTTP response

我正在編寫一個 Java 客戶端應用程序來接收來自 IP 相機的實時 M-JPEG 視頻。 視頻作為無休止的多部分 HTTP 消息由相機發送,其中每個部分都是一個 JPEG 幀。 我需要在這些幀到達時對其進行處理,因此我希望有一種方法可以發出 HTTP 請求,該請求在接收到每個消息部分/視頻幀時異步觸發事件。

有人知道任何可以做到這一點的圖書館嗎? 我可以在 Google 上找到的所有示例都不起作用,因為它們使用阻塞調用,這些調用僅解析響應並在收到整個響應后將其分解為多個部分(這顯然不適用於無休止的響應)。

我意識到我可以在數據到達時通過搜索消息邊界手動將其分解為多個部分,但感覺就像我在重新發明輪子一樣。

從Apache Commons嘗試HttpClient。 源代碼有幾個類,顯示如何以流方式讀取多部分。

我編寫了處理我的項目Sceye-Fi的多部分請求的類,這是一個使用java 6附帶的com.sun.net.httpserver類的HTTP服務器,用於從Eye-Fi卡接收照片上傳。 從理論上講,沒有什么能阻止它在無休止的多部分請求中工作。 希望它會有所幫助。

由於問題和現有答案有點舊,我想建議一個更新的答案。

現在有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM