프로그래밍
[Java] HttpClient 간단 사용법 (@ 특정 IP 사용)
FLY32
2009. 3. 3. 10:55
/** * HttpClient 간단 Test (+ 여러 IP 중에서 특정 IP 사용하기) * @author samE * @since 2009-03-03 * @return responseCode * @throws Exception */ public static int httpClientTest() throws Exception { String setIpAddr = "10.101.46.59"; URL url = new URL("http://127.0.0.1:8080"); HttpConnectionManager httpConnMgr = new SimpleHttpConnectionManager(); HttpConnectionManagerParams httpConnMgrParams = new HttpConnectionManagerParams(); // Connection Timeout 설정 httpConnMgrParams.setConnectionTimeout(10000); // SO Timeout 설정 httpConnMgrParams.setSoTimeout(120000); httpConnMgr.setParams(httpConnMgrParams); // HttpClient 객체 생성 HttpClient httpClient = new HttpClient(httpConnMgr); PostMethod post = new PostMethod(url.toString()); boolean bSet = false; Enumeration nets = NetworkInterface.getNetworkInterfaces(); System.out.println("----------- InetAddress List -----------"); // Network Interface 개수만큼 반복 (물리적 랜카드가 여러개 장착되어 있을 때) while(nets.hasMoreElements()) { NetworkInterface net = (NetworkInterface)nets.nextElement(); Enumeration inetAddrs = net.getInetAddresses(); // InetAddress 개수만큼 반복 (하나의 랜카드에 여러 가상 IP가 설정되어 있을 때) while(inetAddrs.hasMoreElements()) { InetAddress inetAddr = (InetAddress)inetAddrs.nextElement(); System.out.println(inetAddr.getHostAddress()); // InetAddress의 주소가 요청된 IP주소와 같은 값을 가졌을 경우 if(setIpAddr.equals(inetAddr.getHostAddress())) { System.out.println("----------------------------------------"); System.out.println("set ip address : " + inetAddr.getHostAddress()); System.out.println("----------------------------------------"); // 해당 IP를 HttpClient 객체에 셋팅하고 반복문을 빠져 나감. httpClient.getHostConfiguration().setLocalAddress(inetAddr); bSet = true; break; } } if(bSet) { break; } } // HttpHeader 설정 post.setRequestHeader("Accept" , "...."); post.setRequestHeader("Authorization" , "...."); post.setRequestHeader("SOAPAction" , "\"ebXML\""); post.setRequestHeader("Content-Type" , "multipart/related; ...."); post.setRequestHeader("Connection" , "keep-alive"); // Execute return httpClient.executeMethod(post); }