Where The Streets Have No Name

httpclient예제 본문

Developement/Java

httpclient예제

highheat 2006. 7. 19. 17:22

import java.util.regex.*;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;

public class SaupjaCaution {

 public static void main(String[] args) {

  httpConnect("5138137263","5031551910",true);
 }

 /**
  * httpclient가 웹서버에 접속해서 값을 받아옴
  * @param SourceSaupNo
  * @param TargetSaupNo
  * @param debugFlag
  */
 public static String httpConnect(String SourceSaupNo, String TargetSaupNo, boolean debugFlag){
  //접속url
  String url = "http://www.nts.go.kr:80/front/service/refer_cal/Saup/refer_saupja_caution.asp";
 
  //return value
  String caution = "";
 
  //Instantiate an HttpClient
  HttpClient client = new HttpClient();
  client.getParams().setParameter("http.protocol.content-charset", "EUC-KR");

  //Instantiate a GET HTTP method
  HttpMethod method = new GetMethod(url);
        
  method.setRequestHeader("User-Agent","Mozilla/4.0");
  method.setRequestHeader("Referer",url);
  
  try{
   //Define name-value pairs to set into the QueryString
   NameValuePair nvp1= new NameValuePair("Source_Saup_No",SourceSaupNo);
   NameValuePair nvp2= new NameValuePair("Target_Saup_No",TargetSaupNo);
   method.setQueryString(new NameValuePair[]{nvp1,nvp2});
       
   int statusCode = client.executeMethod(method);

    if( debugFlag ){
     System.out.println("******************* httpConnect() start ************************");
    System.out.println("QueryString>>> "+method.getQueryString());
    System.out.println("Status Text>>> "+HttpStatus.getStatusText(statusCode));
    }  

   //Get data as a String
   String output = method.getResponseBodyAsString();
   //System.out.println(output);

   String ConfirmSaupId = findPattern(output,"value=(.*)",""");
   if( debugFlag )System.out.println(ConfirmSaupId);     

   //Define name-value pairs to set into the QueryString
   NameValuePair nvp3= new NameValuePair("Confirm_Saup_Id",ConfirmSaupId);
   NameValuePair nvp4= new NameValuePair("Source_Saup_No",SourceSaupNo);
   NameValuePair nvp5= new NameValuePair("Target_Saup_No",TargetSaupNo);        
   method.setQueryString(new NameValuePair[]{nvp3,nvp4,nvp5});  
  
   int statusCode2 = client.executeMethod(method);
  
   if( debugFlag ){
    System.out.println("QueryString>>> "+method.getQueryString());
    System.out.println("Status Text>>> "+HttpStatus.getStatusText(statusCode2));
   }

   //Get data as a String  
   String output2 = method.getResponseBodyAsString();
   //System.out.println(output2);
           
   caution = findPattern(output2,"<b style="color:blue"(.*)","</b>");
   if( debugFlag ){
    System.out.println(caution);
    System.out.println("******************* httpConnect() end ************************");
   }
                          
   //release connection
   method.releaseConnection();    
  } catch(Exception e) {
   e.printStackTrace();
  } finally {
   return caution;
  } 
 
 }
 
 /**
  * 특정문자열 사이의 문자열추출
  * @param argTarget 검색대상이 되는 문자열
  * @param argPattern1 시작검색패턴
  * @param argPattern2 종료검색패턴
  */
 public static String findPattern(String argTarget,String argPattern1,String argPattern2){
  //검색패턴설정
  String patternStr = argPattern1;
  Pattern pattern = Pattern.compile(patternStr);
  Matcher matcher = pattern.matcher("");
   
  //Set the input
  matcher.reset(argTarget);
   
  //Get tagname and contents of tag
  boolean matchFound = matcher.find();   // true
  String tagname = matcher.group(1);     // tag
  tagname = tagname.substring(1);
  tagname = tagname.substring(0,tagname.indexOf(argPattern2));
  return tagname;   
 }  

}