2013-04-27 65 views
19

我有興趣重新使用HttpUrlConnection(作爲我正在開發的服務器和客戶端之間的有狀態協議的一部分)。 我知道有一個連接=保持活動標頭持久http。 現在,我想知道如何重用這樣的合作。 我寫了這個代碼:如何重用HttpUrlConnection?

URL u = new java.net.URL("http://localhost:8080/Abc/Def"); 
HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
c.setRequestMethod("GET"); 
c.setRequestProperty("Connection", "keep-alive"); 
c.setHeader("A","B"); 
c.getInputStream() //here I see that server gets my messages (using DEBUG) 
c.setHeader("B","C"); // 

現在我該如何重新發送這個「B」標頭的服務器,我嘗試重新連接等,但沒有得到它的工作。

而且服務器還執行response.setHeader("Connection", "keep-alive");

我在很多論壇看了看,但是這個沒有人寫。也許HttpURLConnection不處理這個?

+0

@Kowser無意義的評論。 HTTP規範是*關於*標頭和正文。它沒有任何關於HttpURLConnection API的說法。 – EJP 2013-04-27 22:29:51

回答

36

你不知道。你關閉這個並創建一個新的。它在後臺執行TCP連接池和Keepalive。

+3

輝煌,我甚至沒有想到,這可能會奏效 - 我確信這會打開另一個連接。 – user967710 2013-04-27 22:50:48

+1

除了它通常不會,原因不明。 – Tuntable 2016-12-14 11:56:05

+0

@aberglas在運行七年的生產代碼中從未看到過。如果你有證據,請製作它。沒有資料的軼事是不夠的。 – EJP 2017-01-06 22:53:32