새주소 검색 웹 서비스


도로명 주소, 지번 주소, 도로명 영문 주소를 한번에 검색할 수 있는 웹 서비스 입니다.
웹 서비스 호출은 HTTP GET 방식을 사용합니다.
결과 값은 XML과 JSON 중에서 원하시는 방식을 선택하여 리턴 받을 수 있습니다.
페이지의 하단에 각 언어별 예제 소스가 준비되어 있습니다.

(구)웹 서비스의 URL은 http://ws.didim365.com/address/addr.aspx 입니다. (6자리 우편번호)
(신)웹 서비스의 URL은 http://ws.didim365.com/address/addrnew.aspx 입니다. (5자리 우편번호)

웹 서비스는 UTF-8과 EUC-KR 인코딩을 지원 합니다.
파라미터 값의 한글 부분은 모두 URL 인코딩을 해주셔야 합니다.
검색된 결과가 3,000개를 초과할 경우 에러는 반환합니다.
설명 파라미터
회원 인증 키 key API 사용을 위한 "회원 인증 키"
회원전용 사이트의 회원 정보 관리
페이지 에서 확인 가능 합니다.
(필수)
검색 방법 구 우편번호 검색과
신 우편번호 검색 중
사용할 방법을 선택합니다.
명령어 cmd 공백 또는 "ss" : 일반주소 검색
"sd" : 시/도 리스트만 반환
※ 검색조건이나 결과옵션 값이 모두 무시 됩니다.
"sg" : 시/군/구 리스트만 반환
※ 시/도 값을 제외한 검색조건이나 결과옵션 값이 모두 무시 됩니다.
시/도 선택 sd 전체검색 : 공백
지정검색 : 시/도명 (한/영)
(URL 인코딩 필요)

(명령어가 "sg" 인 경우 필수)
시/군/구 sg 전체검색 : 공백
지정검색 : 시/군/구 명 (한/영)
(URL 인코딩 필요)
검색어종류 kt 공백 : 통합검색(도로명 + 지번을 모두검색) / 우편번호 검색
※ 한번의 검색으로 도로명과 지번 모두에서
검색 가능하지만 정확도가 떨어질 수 있습니다.

※ 우편번호로 검색 시에도 이 값을 공백으로
해주시면 됩니다.

"d" : 검색어가 도로명이라고 가정하고 검색
※ 입력한 검색어로 도로명에서만 검색
"j" : 검색어가 지번이라고 가정하고 검색
※ 입력한 검색어로 지번에서만 검색

※ 이 값은 검색어의 옵션으로 결과 형식에 영향을 주지 않습니다.
검색어 k 검색하려는
도로명/동/리/건물명
(URL 인코딩 필요)
(필수)
※ 영문 검색은 도로명 주소만 가능 합니다.
결과형식 r "x" = XML
"j" = JSON
(기본값:XML)
인코딩 enc "utf-8" = UTF-8(유니코드) 인코딩
"euc-kr" = EUC-KR 인코딩
(기본값:utf-8)
결과 옵션 dr "t" = 포함
"f" = 포함안함
jb "t" = 포함
"f" = 포함안함
de "t" = 포함
"f" = 포함안함
bn "t" = 포함
"f" = 포함안함
sp "t" = 포함
"f" = 포함안함

(결과를 간단하게 보려 할 경우 체크 하시면 됩니다.)
최종 요청 URL
<%
	WS_URL = "http://ws.didim365.com/address/addrnew.aspx"

	'
	' 각  옵션에 대한 자세한 사항은 http://ws.didim365.com/address/docs.aspx 페이지 참고
	'

	' 시/도 선택
	GET_URL = WS_URL & "?sd="
	' 시/군/구				
	GET_URL = GET_URL & "&sg="
	' 결과형식				
	GET_URL = GET_URL & "&r=x"

	' 인코딩(UTF-8)
	GET_URL = GET_URL & "&enc=utf-8"
	' 인코딩(EUC-KR)
	' GET_URL = GET_URL & "&enc=euc-kr"

	' 검색어(UTF-8) (도로명/동/리/건물명)
	GET_URL = GET_URL & "&k=" & "가산디지털1로 51"
	' 검색어(EUC-KR) (도로명/동/리/건물명)
	' GET_URL = GET_URL & "&k=" & Server.URLEncode("가산디지털1로 51")

	' 결과에 도로명 주소 포함여부
	GET_URL = GET_URL & "&dr=t"													
	' 결과에 지번주소 포함 여부
	GET_URL = GET_URL & "&jb=f"													
	' 결과에 도로명 영문주소 포함 여부
	GET_URL = GET_URL & "&de=f"													
	' 결과에 대량배달/건물명 포함여부
	GET_URL = GET_URL & "&bn=t"													
	' 결과에서 건물번호/지번 정보 제외
	GET_URL = GET_URL & "&sp=f"													
	' 회원 인증키
	' 회원 전용 사이트 -> 회원 정보 관리 -> "API 인증키" 사용
	GET_URL = GET_URL & "&key=<회원인증키>"	

    Set objXmlHttp = server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
    objXmlHttp.open "GET", GET_URL, false
    objXmlHttp.send
    strResponseText = objXmlHttp.responseText
	Set objXmlHttp = Nothing

    Set objXml = Server.CreateObject("microsoft.XMLDOM")
    objXml.async = false
    objXml.loadXML(strResponseText)
     
	' Result : 처리 성공="True", 처리 실패="False"
    Result = objXml.SelectSingleNode("/Didim365-Address/Result").Text
	' Message : 처리 실패인 경우 에러 메시지
	Message = objXml.SelectSingleNode("/Didim365-Address/Message").Text
	
	Response.Write("처리 결과 : " & Result & "<br />")
	Response.Write("메시지 : " & Message & "<br />")

	If Result = "True" Then
		' Count : 처리 성공인 경우 검색된 주소 카운트
		Count = objXml.SelectSingleNode("/Didim365-Address/Count").Text
		
		Response.Write("카운트 : " & Count & "개의 주소가 검색 되었습니다.<br /><br />")

		
		Set AddrItems = objXml.selectNodes("/Didim365-Address/Data/Item")

		For Each Addr In AddrItems
			'  <항상 포함>
			' ZipNo : 우편번호
			'  <옵션에 따라 포함>
			' Doro : 도로명 주소
			' DoroEn : 도로면 영문 주고
			' JiBun : 지번주소
			ZipNo = Addr.SelectSingleNode("ZipNo").Text
			Doro = Addr.SelectSingleNode("Doro").Text

			Response.Write ( ZipNo & " : " & Doro & "<br />")
		Next
	End If
	     
    Set objMsXmlDom = Nothing
%>
<?
    // xmlParse.php 파일은 아래 사이트에서 PHP4/5 용 파일 다운로드 가능 합니다.
    // https://www.cikorea.net/bbs/view/source?idx=7442 (php4.zip)
    include "xmlParse.php"; 

    $WS_URL = "http://ws.didim365.com/address/addrnew.aspx";

    /*
    * 각  옵션에 대한 자세한 사항은 http://ws.didim365.com/address/docs.aspx 페이지 참고
    */

    // 시/도 선택
    $GET_URL = $WS_URL . "?sd=";
    // 시/군/구	
    $GET_URL .= "&sg=";
    // 결과형식				
    $GET_URL .= "&r=x";

    // 인코딩(UTF-8)
    $GET_URL .= "&enc=utf-8";
    // 인코딩(EUC-KR)
    //$GET_URL .= "&enc=euc-kr";

    // 검색어(UTF-8) (도로명/동/리/건물명)
    $GET_URL .= "&k=" . urlencode((iconv("EUC-KR","UTF-8","가산 디지털1로 51")));
    // 검색어(EUC-KR) (도로명/동/리/건물명)
    // $GET_URL .= "&k=" . urlencode("가산 디지털1로 51");

    // 결과에 도로명 주소 포함여부
    $GET_URL .= "&dr=t";
    // 결과에 지번주소 포함 여부
    $GET_URL .= "&jb=f";
    // 결과에 도로명 영문주소 포함 여부
    $GET_URL .= "&de=f";
    // 결과에 대량배달/건물명 포함여부
    $GET_URL .= "&bn=t";
    // 결과에서 건물번호/지번 정보 제외
    $GET_URL .= "&sp=f";
    // 회원 인증키
    // 회원 전용 사이트 -> 회원 정보 관리 -> "API 인증키" 사용
    $GET_URL .= "&key=<회원인증키>";
    // 캐쉬가 안되도록 하기 위한 타임스탬프값 (캐쉬 방지 용으로 실제 사용하지는 않는 값입니다.)
    $GET_URL .= "&ts=" . time();

    $ch = cURL_init();
    cURL_setopt($ch, CURLOPT_URL, $GET_URL);
    cURL_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = cURL_exec($ch);
    cURL_close($ch); 

    $parser = new XMLParser($response);
    $parser->Parse();
    $doc_el = $parser->document;

    // result : 처리 성공="True", 처리 실패="False"
    $Result = $doc_el->result[0]->tagData;
    // message : 처리 실패인 경우 에러 메시지
    $Message = $doc_el->message[0]->tagData;

    echo ("처리 결과 : " . $Result . "<br />");
    echo ("메시지 : " . $Message . "<br />");

    if ($Result == "True") 
    {
	    // count : 처리 성공인 경우 검색된 주소 카운트
	    $Cnt = $doc_el->count[0]->tagData;
	
	    echo ("카운트 : " . $Cnt . "개의 주소가 검색 되었습니다.<br /><br />");


	    foreach($doc_el->data[0]->item as $item) 
	    {
		    //  <항상 포함>
		    // zipno : 우편번호
		    //  <옵션에 따라 포함>
		    // doro : 도로명 주소
		    // doroen : 도로면 영문 주고
		    // jibun : 지번주소
		
		    $ZipNo = $item->zipno[0]->tagData;
		    $Doro = $item->doro[0]->tagData;

            // (EUC-KR 일 경우 아래코드 주석처리)
		    $Doro = iconv("UTF-8","EUC-KR", $Doro);

		    echo ( $ZipNo . " : " . $Doro . "<br />");
	    }
    }
?>
				
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>새주소 검색 서비스</title>
</head>
<body>
    <form id="form1" runat="server">
<%
	string WS_URL = "http://ws.didim365.com/address/addrnew.aspx";

	//
	// 각  옵션에 대한 자세한 사항은 http://ws.didim365.com/address/docs.aspx 페이지 참고
	//

	// 시/도 선택
	string GET_URL = WS_URL + "?sd=";
	// 결과형식				
	GET_URL = GET_URL + "&sg=";
	// 결과형식				
	GET_URL = GET_URL + "&r=x";	
                    
	// 인코딩(UTF-8)
	GET_URL = GET_URL + "&enc=utf-8";
    // 인코딩(EUC-KR)
    // GET_URL = GET_URL + "&enc=euc-kr";

	// 검색어(UTF-8) (도로명/동/리/건물명)
	GET_URL = GET_URL + "&k=" + HttpUtility.UrlEncode("가산디지털1로 51");	
    // 검색어(EUC-KR) (도로명/동/리/건물명)
    // GET_URL = GET_URL + "&k=" + HttpUtility.UrlEncode("가산디지털1로 51", Encoding.GetEncoding("euc-kr"));

	// 결과에 도로명 주소 포함여부
	GET_URL = GET_URL + "&dr=t";													
	// 결과에 지번주소 포함 여부
	GET_URL = GET_URL + "&jb=f";													
	// 결과에 도로명 영문주소 포함 여부
	GET_URL = GET_URL + "&de=f";													
	// 결과에 대량배달/건물명 포함여부
	GET_URL = GET_URL + "&bn=t";													
	// 결과에서 건물번호/지번 정보 제외
	GET_URL = GET_URL + "&sp=f";													
	// 회원 인증키
	// 회원 전용 사이트 -> 회원 정보 관리 -> "API 인증키" 사용
	GET_URL = GET_URL + "&key=<회원인증키>";
		
	string ret = "";

	using (System.Net.WebClient wc = new System.Net.WebClient())
	{
		byte[] bRet = wc.DownloadData(GET_URL);

        // 인코딩(UTF-8)
		ret = Encoding.UTF8.GetString(bRet);
        // 인코딩(EUC-KR)
        // ret = Encoding.GetEncoding("euc-kr").GetString(bRet);
        
        ret = HttpUtility.HtmlDecode(ret);
	}

	System.Xml.XmlDocument xmlAddr = new System.Xml.XmlDocument();
	xmlAddr.LoadXml(ret);

	if (xmlAddr != null)
	{
		System.Xml.XmlElement docAddr = xmlAddr.DocumentElement;

		// Result : 처리 성공="True", 처리 실패="False"
		string Result = docAddr.SelectSingleNode("Result").InnerText;
		// Message : 처리 실패인 경우 에러 메시지
		string Message = docAddr.SelectSingleNode("Message").InnerText;
		
		Response.Write("처리 결과 : " + Result + "<br />");
		Response.Write("메시지 : " + Message + "<br />");

		if (Result == "True")
		{
			// Count : 처리 성공인 경우 검색된 주소 카운트
			string Count = docAddr.SelectSingleNode("Count").InnerText;

			Response.Write("카운트 : " + Count + "개의 주소가 검색 되었습니다.<br /><br />");

			
			System.Xml.XmlNodeList addrItems = docAddr.SelectNodes("Data/Item");

			foreach (System.Xml.XmlNode item in addrItems)
			{
				/*
					<항상 포함>
					ZipNo : 우편번호
					<옵션에 따라 포함>
					Doro : 도로명 주소
					DoroEn : 도로면 영문 주고
					JiBun : 지번주소
				 */
				string ZipNo = item.SelectSingleNode("ZipNo").InnerText;
				string Doro = item.SelectSingleNode("Doro").InnerText;

				Response.Write(ZipNo + " : " + Doro + "<br />");
			}
		}
	}
%>    
    </form>
</body>
</html>