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