실시간주소정보조회 (OPEN API) 연계신청및활용가이드
목차 1. 실시간주소정보조회 (OPEN API) 2. 신청방법 1. 연계신청등록 / 확인 2. I-PIN 인증 3. 신청서작성 3. 확인방법 1. 신청목록 2. 처리상태확인 3. 신청결과확인 4. 적용방법 1. 송수신포멧 2. 에러코드 3. AJAX를활용한 Controller 호출방식 4. JSON을활용한웹페이지호출방식 5. OPEN API 활용
실시간주소정보조회 (OPEN API) OPEN API 를호출하여도로명주소 ( 국문 / 영문 ) 및지번주소, 우편번호정보를 조회하는서비스입니다. 정확성 편의성 실시간 다양성 정확성 : 국가주소정보시스템의도로명주소 DB 를활용하여, 주소데이터에대한정합성을보장합니다. 편의성 : 고객사에서주소정보에대한 DB 자료구축이불필요하므로, 손쉽게구현할 수있습니다. 실시간 : 변동되는주소정보를실시간으로제공합니다. 다양성 : 주소검색데이터를 XML 로제공하여, 도로명주소연계요청사이트에맞는 검색페이지를자유롭게구축할수있습니다. 도로명건축물대장정보가활용되며, 폐지된지번과도로명은조회가불가합니다.
신청방법 [1/3] 도로명주소안내시스템 (www.juso.go.kr) 에서 OPEN API 연계서비스를신청하 고처리내역을확인합니다. 연계신청등록 / 확인및서비스바로가기 주소제공 > Open API 연계를클릭하여, Open API 화면으로이동합니다.
신청방법 [1/3] 도로명주소안내시스템 (www.juso.go.kr) 에서 OPEN API 연계서비스를신청하 고처리내역을확인합니다. 연계신청등록 / 확인및서비스바로가기 를클릭하여 I-PIN 인증화면으로이동후인증완료시, 신청서작성화면으로이동합니다. 를클릭하여 I-PIN 인증화면으로이동후인증완료시, 신청목록화면으로이동합니다. 를클릭하여, 연계신청서샘플화면을확인할수있습니다. 우측상단의버튼을클릭하여연계가이드를다운받을수있습니다.
신청방법 [2/3] 도로명주소안내시스템 (www.juso.go.kr) 에서 OPEN API 연계서비스를신청하 고처리내역을확인합니다. 연계신청등록 (I-PIN 인증 ) 개인정보수집및이용에동의 를체크하고 또는 을클릭 하여, 본인인증을합니다. I-PIN 또는휴대폰인증을정상적으로완료하면신청서샘플화면에서선택한신청하기, 신청내역조회버튼에따라신청서작성 OR 신청목록화면으로이동합니다.
신청방법 [3/3] 도로명주소안내시스템 (www.juso.go.kr) 에서연계신청서비스를신청하고처 리내역을확인합니다. 연계신청등록 ( 신청서작성 ) * 모든컬럼은필수입력항목입니다. 서비스동의사항에 동의함 을체크합니다.( 필수 ) 해당항목을모두입력하고버튼을클릭하면신청서등록이완료됩니다. 버튼을클릭하면목록화면으로이동합니다. 버튼을클릭하면입력예시화면이팝업됩니다. URL, IP가복수일경우각각에대하여연계신청을해야합니다. 예 ) 서브도메인 (sub.test.co.kr, new.test.co.kr) 사용등, 복수도메인인경우에해당합니다. 파일첨부를클릭하여파일을등록할수있습니다.
확인방법 [1/3] 도로명주소안내시스템 (www.juso.go.kr) 에서 OPEN API 연계서비스를신청하 고처리내역을확인합니다. 연계신청등록 ( 신청목록 ) 나의신청현황을클릭후 I-PIN 인증을완료하거나메뉴를클릭한후 I- PIN 인증이완료되면인증한사용자가작성한신청서목록이출력됩니다. * 최초사용자의경우, 해당하는목록이없습니다.
확인방법 [2/3] 도로명주소안내시스템 (www.juso.go.kr) 에서연계신청서비스를신청하고처 리내역을확인합니다. 연계신청등록 ( 처리상태확인 ) 승인여부 항목을통해신청서의진행상태를확인할수있습니다. 진행단계 : > > ( / ) 관리자가해당신청서를확인하기전상태입니다.( 수정 / 삭제가능 ) 관리자가신청서를검토하고있는상태입니다. 요청하신신청서가정상적으로승인이완료된상태입니다. 요청하신신청서가부적합으로판단된상태입니다.( 수정 / 삭제가능 ) 연계완료후연계신청기관에서연계완료등록을완료한상태입니다. 연계가완료된후연계신청기관은을클릭하여연계완료등록을하셔야계속사용할수있습니다. ( 승인된신청서에한하여연계완료등록버튼이활성화됩니다.) 리스트의 대상시스템 항목을클릭하여상세내용을확인할수있습니다.
확인방법 [3/3] 도로명주소안내시스템 (www.juso.go.kr) 에서연계신청서비스를신청하고처 리내역을확인합니다. 연계신청등록 ( 신청결과확인 ) 승인받은 승인키 를확인합니다. 진행현황 이승인완료일경우에는예시와같이승인키가발급됩니다. 부적합일경우에는적합여부항목에부적합 ( 사유 : ) 사용종료일경우사용종료 ( 사유 : ) 가출력됩니다. 버튼을클릭하면목록화면으로이동합니다. 버튼을클릭하면연계가이드를다운받을수있습니다. 첨부파일을클릭하여첨부한파일을확인할수있습니다.
적용방법 [1/7] 연계신청사이트의주소등록페이지에 OPEN API 서비스를활용할수있도록 수정합니다. (OPEN API 를사용하기위한송수신정보 ) 송수신포멧 송신포멧 순번 구분코드 설 명 비고 1 confmkey 승인키 필수 2 currentpage 페이지번호 필수 3 countperpage 페이지당출력할 ROW 필수 4 keyword 주소검색어 필수 수신포멧 순번 구분코드 설 명 비고 1 totalcount 총검색데이터수 필수 2 currentpage 페이지번호 필수 3 countperpage 페이지당출력할 ROW 필수 4 errorcode 에러코드 필수 5 errormessage 에러메시지 필수 6 roadaddr 전체도로명주소 필수 7 roadaddrpart1 도로명주소 필수 8 roadaddrpart2 도로명주소상세 9 jibunaddr 지번주소 필수 10 engaddr 도로명주소 ( 영문 ) 필수 11 zipno 우편번호 필수 12 admcd 행정구역코드 필수 13 rnmgtsn 도로명코드 필수 14 bdmgtsn 건물관리번호 필수 수신데이터는 XML 형태로제공됩니다. 호출방식에따른 URL 정보 ( 행정망일경우 www.juso.go.kr 10.182.60.22 사용 ) Controller 에서 URL 호출방식 : http://www.juso.go.kr/addrlink/addrlinkapi.do 웹페이지에서 JSON 타입으로호출방식 : : http://www.juso.go.kr/addrlink/addrlinkapijsonp.do OPEN API 에서제공되는인코딩타입은 UTF-8 입니다. 사용하는시스템환경에맞게인코딩타입을변경하여사용하시기바랍니다.
적용방법 [2/7] OPEN API 를사용시에러코드정보입니다. 에러코드 에러코드 순번 에러코드 에러메세지 1 0 정상 2-999 시스템에러 3 E0001 승인되지않은 KEY 입니다. 4 E0002 승인되지않은사이트입니다. 5 E0003 정상적인경로로접속하시기바랍니다. 6 E0004 검색결과는최대 1000건입니다. currentpage, countperpage를확인하시기바랍니다. 7 P0001 검색결과가너무많습니다. 도로명주소또는지번을입력하세요 수신데이터샘플 <?xml version=\"1.0\" encoding=\"utf-8\"?> <results> <common> <totalcount>110</totalcount> <currentpage>1</currentpage> <countperpage>10</countperpage> <errorcode>0</errorcode> <errormessage> 정상 </errormessage> </common> <juso> <roadaddr> 서울특별시서초구강남대로12길 6 ( 양재동 )</roadaddr> <roadaddrpart1> 서울특별시서초구강남대로12길 6</roadAddrPart1> <roadaddrpart2> ( 양재동 )</roadaddrpart2> </juso> <juso> </juso> </results> <jibunaddr> 서울특별시서초구양재동 326-1</jibunAddr> <engaddr>6, Gangnam-daero 12-gil, Seocho-gu, Seoul</engAddr> <zipno>137-897</zipno> <admcd>1165010200</admcd> <rnmgtsn>116504163008</rnmgtsn> <bdmgtsn>1165010200103260001002677</bdmgtsn> <roadaddr> 서울특별시서초구강남대로12길 8 ( 양재동 )</roadaddr> <roadaddrpart1> 서울특별시서초구강남대로12길 8</roadAddrPart1> <roadaddrpart2> ( 양재동 )</roadaddrpart2> <jibunaddr> 서울특별시서초구양재동 326-2 성경빌딩 </jibunaddr> <engaddr>8, Gangnam-daero 12-gil, Seocho-gu, Seoul</engAddr> <zipno>137-897</zipno> <admcd>1165010200</admcd> <rnmgtsn>116504163008</rnmgtsn> <bdmgtsn>1165010200103260002004362</bdmgtsn>
적용방법 [3/7] AJAX 를통해서연계신청기관의 Controller 에서 OPEN API 를호출합니다. AJAX 를활용한 Controller 호출방식 (1/3) String currentpage = req.getparameter("currentpage"); String countperpage = req.getparameter("countperpage"); String confmkey = req.getparameter("confmkey"); String keyword = req.getparameter("keyword"); String apiurl = "http://www.juso.go.kr/addrlink/addrlinkapi.do?currentpage="+currentpage+"&countperpage=" +countperpage+"&keyword="+urlencoder.encode(keyword,"utf-8")+"&confmkey="+confmkey; URL url = new URL(apiUrl); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8")); StringBuffer sb = new StringBuffer(); String tempstr = null; while(true){ tempstr = br.readline(); if(tempstr == null) break; sb.append(tempstr); br.close(); response.setcharacterencoding("utf-8"); response.setcontenttype("text/xml"); response.getwriter().write(sb.tostring()); 요청파라미터정보를등록합니다. currentpage : 현재페이지, 기본값은 1 입니다. countperpage : 페이지당출력할 ROW( 권장사항 : 10 ) confmkey : 승인시받은승인키 keyword : 주소검색어 Controller 에서 OPEN API 을호출합니다. 최대 1000 건까지만검색이되고, 1000 건이넘을경우에러가발생합니다. (currentpage * countperpage >1000 일경우포함 ) 접속테스트시 http://www.juso.go.kr/addrlink/addrlinkapitest.do 를이용하여호출하면인증없이특정결과값을리턴합니다.( 입력파라메터는무시됨. 단, currentpage, countperpage 가잘못입력된경우에러발생 )
적용방법 [4/7] AJAX 를통해서연계신청기관의 Controller 에서 OPEN API 를호출합니다. AJAX 를활용한 Controller 호출방식 (2/3) <script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script> <script language="javascript"> function getaddrloc(){ $.ajax({ url :"controller 호출 URL, type:"post, data:$("#form").serialize(),datatype:"xml, success:function(xmlstr){ $("#list").html(""); var errcode = $(xmlstr).find("errorcode").text(); var errdesc = $(xmlstr).find("errormessage").text(); if(errcode!= "0"){ alert(errcode+"="+errdesc); else{ if(xmlstr!= null){ makelist(xmlstr);, error: function(xhr,status, error){ alert(" 에러발생 "); ); function makelist(xmlstr){ var htmlstr = ""; htmlstr += "<table>"; $(xmlstr).find("juso").each(function(){ htmlstr += "<tr>"; htmlstr += "<td>"+$(this).find('roadaddr').text() +"</td>"; htmlstr += "<td>"+$(this).find('roadaddrpart1').text() +"</td>"; htmlstr += "<td>"+$(this).find('roadaddrpart2').text() +"</td>"; htmlstr += "<td>"+$(this).find('jibunaddr').text() +"</td>"; htmlstr += "<td>"+$(this).find('engaddr').text() +"</td>"; htmlstr += "<td>"+$(this).find('zipno').text() +"</td>"; htmlstr += "<td>"+$(this).find('admcd').text() +"</td>"; htmlstr += "<td>"+$(this).find('rnmgtsn').text() +"</td>"; htmlstr += "<td>"+$(this).find('bdmgtsn').text() +"</td>"; htmlstr += "</tr>"; ); htmlstr += "</table>"; $("#list").html(htmlstr); function entersearch() { var evt_code = (window.netscape)? ev.which : event.keycode; if (evt_code == 13) { event.keycode = 0; getaddrloc(); </script>
적용방법 [5/7] AJAX 를통해서연계신청기관의 Controller 에서 OPEN API 를호출합니다. AJAX 를활용한 Controller 호출방식 (3/3) <body> <form name="form" id="form" method="post"> <input type="hidden" name="currentpage" value="1"/> <input type="hidden" name="countperpage" value="10"/> <input type= text" name="confmkey" id="confmkey" style= display:none; value=" 승인키 "/> keyword : <input type="text" name="keyword" onkeydown="entersearch();"/> <input type="button" onclick="getaddrloc();" value=" 검색 /> <div id="list"></div> </form> </body> Ajax 를통해서연계신청기관의 Controller 를호출합니다. 결과값이정상일경우, XML 형태의주소정보를출력합니다.
적용방법 [6/7] JSON 을통해연계신청기관의 JSP 웹페이지에서 OPEN API 를호출합니다. JSON 을활용한웹페이지호출방식 (1/2) <script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script> <script language="javascript"> function getaddr(){ $.ajax({ url :"http://www.juso.go.kr/addrlink/addrlinkapijsonp.do",type:"post",data:$("#form").serialize(),datatype:"jsonp",crossdomain:true,success:function(xmlstr){ if(navigator.appname.indexof("microsoft") > -1){ //ie 경우에만 var xmldata = new ActiveXObject("Microsoft.XMLDOM"); xmldata.loadxml(xmlstr.returnxml) else{ var xmldata = xmlstr.returnxml; $("#list").html(""); var errcode = $(xmldata).find("errorcode").text(); var errdesc = $(xmldata).find("errormessage").text(); if(errcode!= "0"){ alert(errcode+"="+errdesc); else{ if(xmlstr!= null){ makelist(xmldata);,error: function(xhr,status, error){ alert(" 에러발생 "); ); function makelist(xmlstr){ var htmlstr = ""; htmlstr += "<table>"; $(xmlstr).find("juso").each(function(){ htmlstr += "<tr>"; htmlstr += "<td>"+$(this).find('roadaddr').text() +"</td>"; htmlstr += "<td>"+$(this).find('roadaddrpart1').text() +"</td>"; htmlstr += "<td>"+$(this).find('roadaddrpart2').text() +"</td>"; htmlstr += "<td>"+$(this).find('jibunaddr').text() +"</td>"; htmlstr += "<td>"+$(this).find('engaddr').text() +"</td>"; htmlstr += "<td>"+$(this).find('zipno').text() +"</td>"; htmlstr += "<td>"+$(this).find('admcd').text() +"</td>"; htmlstr += "<td>"+$(this).find('rnmgtsn').text() +"</td>"; htmlstr += "<td>"+$(this).find('bdmgtsn').text() +"</td>"; htmlstr += "</tr>"; ); htmlstr += "</table>"; $("#list").html(htmlstr);
적용방법 [7/7] JSON 을통해연계신청기관의 JSP 웹페이지에서 OPEN API 를호출합니다. JSON 을활용한웹페이지호출방식 (2/2) function entersearch() { var evt_code = (window.netscape)? ev.which : event.keycode; if (evt_code == 13) { event.keycode = 0; getaddr(); </script> <body> <form name="form" id="form" method="post"> <input type="hidden" name="currentpage" value="1"/> <input type="hidden" name="countperpage" value="10"/> <input type="text" name="confmkey" id="confmkey" style="width:250px;display:none" value=" 승인키 "/> keyword : <input type="text" name="keyword" value="" onkeydown="entersearch();"/> <input type="button" onclick="getaddr();" value=" 검색 "/> <div id="list"></div> </form> </body> JSP 페이지의 FORM에요청파라미터정보를등록합니다. currentpage : 현재페이지, 기본값은 0 입니다. countperpage : 페이지당출력할 ROW( 권장사항 : 10 ) confmkey : 승인시받은승인키 keyword : 주소검색어 jsonp방식은 xmlstr.returnxml 에데이터가리턴되며, XML형태의 String으로반환됩니다. 최대 1000 건까지만검색이되고, 1000 건이넘을경우에러가발생합니다. (currentpage * countperpage >1000 일경우포함 ) 접속테스트시 http://www.juso.go.kr/addrlink/addrlinkapijsonptest.do 를이용하여호출하면인증없이특정결과값을리턴합니다.( 입력파라메터는무시됨. 단, currentpage, countperpage 가잘못입력된경우에러발생 ) IE 일경우위와같이 var xmldata = new ActiveXObject("Microsoft.XMLDOM"); xmldata.loadxml(xmlstr.returnxml) 로변환후데이터를매핑시키면됩니다.
OPEN API 활용 (1/2) 도로명주소안내시스템에서제공하는 OPEN API 서비스를활용하면간편하고 정확한도로명주소검색서비스가가능합니다. OPEN API 주소검색 OPEN API 주소검색 http://www.juso.go.kr/ 주소정보 XML 도로명주소연계요청사이트 연계신청홈페이지의회원가입, 주소검색등도로명주소검색이필요한시스템에서 OPEN API 를호출하여활용합니다. 국가주소정보시스템 (KAIS) 을통한프로그램연계방식의도로명주소정보서비스를제공합니다. ( 도로명주소 ( 국문 / 영문 ), 지번주소, 우편번호 )
OPEN API 활용 (2/2) 도로명주소안내시스템에서제공하는 OPEN API 서비스를활용하면간편하고 정확한도로명주소검색서비스가가능합니다. OPEN API 주소검색 도로명주소전체도로명주소참고주소지번주소영문도로명주소우편번호 서울특별시강남구선릉로 130 길 20 ( 삼성동, 래미안삼성 2 차아파트 ) 서울특별시강남구선릉로 130 길 20 ( 삼성동, 래미안삼성 2 차아파트 ) 서울특별시강남구삼성동 7-3 래미안삼성 2 차아파트 20, Seolleung-ro 130 -gil, Gangnam-gu, Se oul 135-507 서울특별시강남구영동대로 114 길 56 ( 삼성동, 래미안삼성 1 차아파트 ) 서울특별시강남구영동대로 114 길 56 ( 삼성동, 래미안삼성 1 차아파트 ) 서울특별시강남구삼성동 103-22 래미안삼성 1 차아파트 56, Yeongdong-daer o 114-gil, Gangnamgu, Seoul 135-872 서울특별시강남구남부순환로 2803 ( 도곡동, 삼성래미안아파트 ) 서울특별시강남구남부순환로 2803 ( 도곡동, 삼성래미안아파트 ) 서울특별시강남구도곡동 91-5 삼성래미안아파트 2803, Nambusunhw an-ro, Gangnam-gu, Seoul 135-505 XML 형태의주소정보데이터 OPEN API 를이용한 SAMPLE 화면 1 2 3 도로명주소 상세주소 참고항목 연계신청기관표기화면 OPEN API 를통하여제공받은데이터 (XML) 를이용하여화면의재구성이가능합니다.