我希望重用HttpUrlConnection(作为我正在开发的服务器和客户端之间的状态协议的一部分)。 我知道有一个Connection=keep-alive头用于持久http。 现在,我想知道如何重用这样的连接。 我已经编写了这段代码:
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
没有处理好这个问题?
HttpClient
(在从其InputStream读取时由URL
内部使用)维护着一个“保持活动缓存”。调用此“KeepAliveStream”的close()
方法将其放入缓存中。该缓存的键基于URL协议、主机和端口。在sun.net.www.http.KeepAliveCache.LIFETIME
毫秒(即5000毫秒)后,这些键会自动删除。因此,如果在5秒钟内没有任何对protocol://host:port
URL的活动,则它们将被自动关闭。 - Matthieu