簡體   English   中英

Java HTTP全雙工

[英]Java HTTP full duplex

我有一個在Jersey上運行的RESTful Web服務(GlassFish 3.1.1)。 這個有點不尋常 - 它使用HTTP流。 客戶端和服務器有一個長時間運行的對話,在這些對話中,他們不斷發送編碼為XML標簽的消息。 這樣做的主要原因是服務器可以推送到客戶端。

我有一個使用HttpURLConnection的測試客戶端。 問題是客戶端的OutputStream或服務器的InputStream過早關閉。 當我嘗試從客戶端發送一些XML時,我會拋出一個ProtocolException (讀取輸入后無法寫入輸出)。

當我使用WizTools RESTClient進行測試時,我可以發布XML請求,但此工具不允許保持連接活動。 但至少我知道Web服務至少在這種情況下正在運行。 (在流媒體場景中可能還不錯;我的猜測是HttpURLConnection讓我失望。

有沒有辦法讓HttpURLConnection保持活着並讓我有機會實際向OutputStream發送內容? 而且,最重要的是,有沒有辦法允許它繼續寫入OutputStream即使它已經通過InputStream接收數據?

更新:

看起來HttpURLConnection強制執行HTTP的傳統用法,即客戶端在完全發送請求(並關閉輸出流)之前無法處理響應。 是否存在允許請求和響應暫時重疊的替代方案? 我剛開始看Apache HttpClient,但我還沒有找到任何表明它可能的東西,所以我不確定我是否在浪費時間。

InputStream讀取后,您不應該寫更多數據,因為這不符合HTTP協議的性質,即Request-Response 這里查看更多內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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