본문 바로가기

웹개발

[JAVA] URL 통신(Response) 받기

url로 다른사이트 내용을 긁어온다던가 타서비스와 연동하여 처리 할때 사용

jdom 관련 라이브러리 필요
- maven 
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>            

1. GET방식으로 요청 XML로 받아오기

String sendUrl = "url?param=1¶m=2 ... ";

SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new URL(sendUrl));   
Element root = doc.getRootElement();

Element PRODUCT_DETAIL = root.getChild("ROOT"); // 상위ELEMENT
PRODUCT_DETAIL.getChildText("PRO_ID");                // 하위ELEMENT


2. POST방식으로 요청 XML,Text로 받아오기

OutputStreamWriter wr = null;
  
   String subUrl = "/URL주소";
   String param  = "PARAM=1";            // 파라미터
            param += "&prodId=" + gfId; // 1개이상일땐 & 붙여서 추가
   
   URL url = new URL(subUrl);
   URLConnection con = url.openConnection();
   con.setDoOutput(true);
   wr = new OutputStreamWriter(con.getOutputStream());
   wr.write(param);
   wr.flush();
     
   // Get the response (xml)
   SAXBuilder builder1 = new SAXBuilder();
   Document doc = builder1.build(con.getInputStream());
   
   Element root = doc.getRootElement();
   String STATUS_CODE = root.getChildText("STATUS_CODE");
   Element PRODUCT_DETAIL = root.getChild("PRODUCT_DETAIL");
   PRODUCT_DETAIL.getChildText("PRO_ID"); // 하위ELEMENT
    
   // Get the response (text)
   BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
   String line  = rd.readLine();  // 여러줄일경우 while처리

   if( wr != null ) wr.close(); // OutputStreamWriter 닫기
   if( rd  != null ) rd.close();  // BufferedReader 닫기