2013-04-27 3 views
19

HttpUrlConnection을 재사용하는데 관심이 있습니다 (개발중인 서버와 클라이언트간에 statefull 프로토콜의 일부로). 영구 http에 대한 연결 = 연결 유지 헤더가 있다는 것을 알고 있습니다. 자, 이제 저는 그러한 재사용을 재사용하는 방법을 알고 싶습니다. 이 나는이 코드를 작성했습니다 : 나는 서버에이 "B"헤더를 다시 어떻게 지금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"); // 

을 나는 등 재 - 연결했지만 아무것도 작동을 얻을 수 없습니다.

그리고 서버는 response.setHeader("Connection", "keep-alive");

나는 많은 포럼에서 검토 한 수행하지만 아무도 이것에 대해 썼다. 어쩌면 HttpURLConnection이 처리하지 않을까요?

+0

@Kowser 의미없는 의견입니다. HTTP 사양은 * about * headers 및 bodies입니다. HttpURLConnection에 대한 API에 대해서는 말할 것도 없습니다. – EJP

답변

36

그렇지 않습니다. 이걸 닫고 새 것을 만듭니다. TCP 연결 풀링 및 킵 얼라이브를 처리합니다.

+3

똑똑하고, 나에게도 이것이 작동하지 않는다. 나는 이것이 다른 연결을 열 것이라고 확신했다. – user967710

+1

불명확 한 이유 때문에 종종 그렇지 않습니다. – Tuntable

+0

@aberglas 7 년 동안 운영 되어온 프로덕션 코드에서는 결코 본 적이 없습니다. 증거가 있으면 그것을 생산하십시오. 외주 처리 된 일화로는 충분하지 않습니다. – EJP

관련 문제