본문 바로가기

Project 자료수집

TourAPI Sample Source

import java.io.*;
 
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
 
// XML 파서
import javax.xml.parsers.*;
import org.w3c.dom.*;
 
//Get Method를 사용한 예제
public class TourAPISample{
 //요청할 API서비스 URL 지정(지역 코드 검색 API)
 
  private static String url = "http://tourapi.visitkorea.or.kr/TourAPI/services/code";
  //파일에 byte[]를 저장하는 method
  public static void saveBytes(String fileName, byte[] byteData) throws Exception{
   FileOutputStream fo = null;
   try {
    fo = new FileOutputStream(fileName);
    fo.write(byteData);
   } finally{
    try {
     fo.close(); fo = null;
   } catch(Exception e){}
  }
 }
 
  public static void main(String[] args) {
   
  //QueryString 지정(지역코드는 서울, 시/군/구 코드는 중구, 읍/면/동 코드는 신당2동)
  url = url + "?code1=1&code2=24&code3=34&pageIndex=1&pageSize=10";
 
  //HttpClient 생성
  HttpClient client = new HttpClient();
 
  //요청 Method 지정
  HttpMethod method = new GetMethod(url); String responseXML = "";
  method.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
 
  //사용자의 TourAPI 인증키 지정
  method.setRequestHeader("Authentication", "TA2011052617071265200404");
 
  try { System.out.println( "QueryString>>>" + method.getQueryString() );
 
   //STEP.1 Http 요청 및 요청 결과
   int statusCode = client.executeMethod(method);
   System.out.println("HTTP status code : " + statusCode );
  
   //요청결과
   if(statusCode == HttpStatus.SC_OK){
    System.out.println("==========================================================");
    System.out.println("요청 성공\n");
  
    //STEP.2 결과를 화면에 출력
    responseXML = new String(
     method.getResponseBody(), "UTF-8"
    );
    System.out.println("응답 XML:\n" + responseXML);
   
    // STEP.3 XML 파싱
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    InputStream istream = new ByteArrayInputStream(responseXML.getBytes("utf-8"));
    Document doc = builder.parse(istream);   
    Element order = doc.getDocumentElement();
    NodeList items = order.getElementsByTagName("dong");
  
    String Result = "";
    for(int i = 0; i < items.getLength(); i++) {
     Node item = items.item(i);
     NodeList Ntext = item.getChildNodes();
     Node Nitem = Ntext.item(0);
     Node text = Nitem.getFirstChild();
     String ItemName = text.getNodeValue();
     Node Nitem2 = Ntext.item(1);
     Node text2 = Nitem2.getFirstChild();
     String ItemName2 = text2.getNodeValue();
    
     System.out.println("code : " + ItemName + "  동 : " + ItemName2);
    }
  
    System.out.println("==========================================================");
  
    //결과를 파일에 저장
    TourAPISample.saveBytes("responseXML.xml", method.getResponseBody());
   }else {
    System.err.println("Method failed: " + method.getStatusLine());
   }
 
  } catch (Exception e) {
   System.err.println("Fatal protocol violation: " + e.getMessage()); e.printStackTrace();
  } finally {
   // Release the connection
   method.releaseConnection();
  } //try end
 
 } //main end
} //TourAPISample end

[출처] : http://cafe.naver.com/web20frontier/842



'Project 자료수집' 카테고리의 다른 글

RAP 관련 링크  (0) 2013.09.02
RAP 개발을 위한 각종 링크  (0) 2013.08.20
GIT 사용법  (0) 2013.08.16
UPnP 관련 URL  (0) 2013.07.16
오픈소스 홈네트워크 프로그램 (UPnP)  (0) 2013.07.02