2010-03-16 2 views
14

하나의 HttpURLConnection에서 여러 요청을 Java로 어떻게 처리 할 수 ​​있습니까?하나의 HttpURLConnection에서 여러 요청

URL url = new URL("http://my.com"); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
HttpURLConnection.setFollowRedirects(true); 
connection.setDoOutput(true); 
connection.setRequestMethod("GET"); 

PrintStream ps = new PrintStream(connection.getOutputStream()); 
ps.print(params); 
ps.close(); 
connection.connect(); 
//TODO: do next request with other url, but in same connection 

감사합니다. Javadoc의에서

답변

15

:

각 HttpURLConnection의 인스턴스는 하나의 요청을 만드는 데 사용됩니다.

분명히 의미가되지 않는 개체는 다시 사용할 수 있습니다.

은 제외하고 약간의 메모리 탈곡과 비 효율성에서, 모든 당신이 만들고 싶어 요청에 대한 개방 한 HttpURLConnection의에 더 큰 문제가 없다. 그러나 더 큰 규모의 효율적인 네트워크 IO를 원한다면 Apache HttpClient과 같은 전문 라이브러리를 사용하는 것이 좋습니다. 정답을 넘어

+2

나는 똑같은 것을 말하려고했는데, 재사용 할 생각이 없다. –

+0

+1을해라! 보통 나는 내 대답에 대해 오랫동안 고민하여 모두가 나를 때린다. :) –

+0

@CarlSmotricz는 사실일지도 모르지만, 제 경우에는 많은 요청을 받고 있습니다. 매개 변수를 가져 오는 get/post 매개 변수 없이는 너무 많은 것입니다. ... http 연결에만 간단한 코드를 사용했습니다. http://stackoverflow.com/questions/23017813/httpurlconnection-lots-of-requests – Bhuro

3

는, 어쩌면 당신이 실제로 원하는 것을 기본 TCP 연결의 재사용, 실제로 JDK의 HttpURLConnection의 지원하는 일명 "영구 연결"이다. 따라서 다른 이유로 http 라이브러리를 사용할 필요가 없습니다. 거기에는 다른 합법적 인 이유가있을 수 있지만 성능은 가능할 수 있습니다 (그러나 반드시 그런 것은 아닙니다, 유스 케이스, 라이브러리에 따라 다름).

+0

고마워,하지만 이미 제 3 부 라이브러리로 끝냈다. –

+0

@StaxMan, 죄송 합니다만 HttpURLConnection을 사용하여 "영구 연결"을 구현하는 예제를 제공 할 수 있습니까? 어쩌면 모든 링크 또는 코드 조각? – Ksenia

+1

@Ksenia 거기에는 아무 것도 없습니다. 자동으로 사용됩니다. 그것은 투명합니다. 새 TCP 연결은 필요한 경우에만 열립니다. 기존의 JDK는 기본값 (30 초)을 유지하고 너무 오랫동안 유휴 상태 인 경우 닫힙니다. 따라서 LOGICAL http 요청/응답 쌍은 이전의 완료된 http 요청/응답과 동일한 PHYSICAL TCP 연결을 사용할 수 있습니다. – StaxMan

관련 문제