도로명주소 우편번호 API 신청페이지

* 사용할 서버IP :
API사용될 서버IP(인증값으로 사용/ C class 등록가능 ex) 168.126.63. )
* 적용할 도메인 주소 : 무료인만큼 제대로 기재해주세요 .
* 사이트내용 : 불법사이트(도박/성인.)가입불가
* 메일 주소 : 인증메일보냅니다.(추후 업데이트공지등)
[공지]
[2017/08/10] 2017년 제8차 국가기초구역 체계의 우편번호 조정 고시
[2017/07/05] 2017년 제7차 국가기초구역 체계의 우편번호 조정 고시
[2015/08/04] 새우편번호 5자리 지원
[2014/12/10] 12월 우편번호 업데이트
[2014/07/28] 기본 API조회건수 5000건으로 늘렸습니다!
[2014/07/22] 7월 우편번호 업데이트
[2014/04/22] 4/7 일자 우편번호 업데이트
[2013/12/24] 영문주소값 리턴 지원 ( addr_eng )
[2013/12/16] 구주소로신주초찾기 지원 ( type=newdong 소스참조 )

* 인증메일안에 링크를 수신하셔야 사용하실 수 있습니다.

우편번호 API제공에 있어서 (주)피에이치피스쿨닷컴에는 어떠한 책임도 없습니다.(서버장애/오류등)
우편번호 API 오류시 대체 수단을 가지고 계셔야합니다. (ex: 자체db사용 / 주소 수기입력 등)
우편번호 API 를 제3자에게 재대여를 하실 수 없습니다.
기본적으로 하루 5000건 조회로 셋팅됩니다. 그 이상 조회시 협의(무료)하셔야 합니다. 안내
메일수신은 기본적으로 동의함을 간주합니다. (서비스변경/스쿨이벤트메일 안내등)



서비스 제공자 : www.phpschool.com
TEST주소 : http://post.phpschool.com/post.html
문의 : member@phpschool.com (제목에 [도로명주소API문의] 기재요망)

PHP의 serialize 예제와 json 예제 두가지를 제공합니다.

PHP serialize 예제
<?
    $search = "가산 에이스";
    $url  = "http://post.phpschool.com/phps.kr";
    $data = array("addr"=>"$search", "ipkey"=>"인증메일에서안내", "charset"=>"EUC-KR", "type"=>"new"); 
    // charset이 UTF-8일경우 "UTF-8" 로 기재
    // ipkey는 인증메일에서 안내합니다.
    // 지번주소로 도로명주소를 찾기위한 검색 "type"=>"newdong"  /* "가산동 371-50" 식으로 동/번지입력 */
    // 지번주소로 찾기의 경우  http://post.phpschool.com/post.html 예를 참조바랍니다.
    // 구주소검색일경우(구 우편번호로만 찾기) "type"=>"old"

    $output = (HTTP_Post($url, $data));
    $output = substr($output, strpos($output,"\r\n\r\n")+4);

    $output = unserialize($output);
    $result = $output['result'];
    if ($result > 0) {
        $post_data = unserialize($output['post']);

        echo "검색건수 : {$output[result]}\n";
        echo "검색시간 : {$output[time]}\n";
        echo "조회횟수 : {$output[cnt]}\n";
        echo "조회한도 : {$output[maxcnt]}\n";

        for ($i=0; $i<$result; $i++) {
                 //$post_data[$i]['postnew'];      // 새우편번호 (5자리)
                 //$post_data[$i]['post'];         // 우편번호   (6자리)
                 //$post_data[$i]['addr_1'];       // 시/도
                 //$post_data[$i]['addr_2'];       // 구
                 //$post_data[$i]['addr_3'];       // 도로명
                 //$post_data[$i]['addr_4'];       // 동/건물
                 //$post_data[$i]['addr_5'];       // 구주소 (도로명주소1:1매칭) 도로명주소검색일경우만 리턴
                 //$post_data[$i]['addr_eng'];     // 영문주소 / 도로주소검색일경우만 리턴

                 print_r($post_data[$i]);
        }
    } else if ($result == 0) {
        echo "검색결과가 없습니다.";
    } else if ($result == -1) {
        echo "검색결과가 너무 많습니다. 입력하신 검색어 $search 뒤에 단어를 추가해서 검색해보세요.";
    } else if ($result < 0) {
        echo "검색실패 : ".$output['message'];
    }

    // $result  "-1"  일경우 :  너무많은검색결과 1000건이상
    // $result  "-2"  일경우 :  서버 IP 미인증
    // $result  "-3"  일경우 :  조회횟수초과  
    // $result  "-4"  일경우 :  미인증 사용자


    // 실제 구현 소스는 위에까지입니다. 아래는 소켓함수(curl로 구현가능)
    function HTTP_Post($URL,$data) {
        $URL_Info=parse_url($URL);
        if(!empty($data)) foreach($data AS $k => $v) $str .= urlencode($k).'='.urlencode($v).'&';
        $path = $URL_Info["path"];
        $host = $URL_Info["host"];
        $port = $URL_Info["port"];
        if (empty($port)) $port=80;

        $result = "";
        $fp = fsockopen($host, $port, $errno, $errstr, 30);
        $http  = "POST $path HTTP/1.0\r\n";
        $http .= "Host: $host\r\n";
        $http .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $http .= "Content-length: " . strlen($str) . "\r\n";
        $http .= "Connection: close\r\n\r\n";
        $http .= $str . "\r\n\r\n";
        fwrite($fp, $http);
        while (!feof($fp)) { $result .= fgets($fp, 4096); }
        fclose($fp);
        return $result;
    }
?>

PHP json 예제
<?
    $search = "가산 에이스";               // json은 UTF-8만 지원합니다. (결과값도 UTF-8로 리턴)
    $url  = "http://post.phpschool.com/json.phps.kr";
    $data = array("addr"=>$search, "ipkey"=>"인증메일에서안내", "type"=>"new");
    // ipkey는 인증메일에서 안내합니다.
    // 구주소검색일경우 array("addr"=>$search, "ipkey"=>"XXX",  "type"=>"old");  
    // 지번주소로 도로명주소를 찾기위한 검색 "type"=>"newdong"  /* "가산동 371-50" 식으로 동/번지입력 */
    // 지번주소로 찾기의 경우  http://post.phpschool.com/post.html 예를 참조바랍니다.
    // 구주소검색일경우(구 우편번호로만 찾기) "type"=>"old"  
    

    $output = (HTTP_Post($url, $data));
    $output = substr($output, strpos($output,"\r\n\r\n")+4);

    $json = json_decode($output);

    if ($json->result > 0) {

        echo "검색건수 : {$json->result}\n";
        echo "검색시간 : {$json->time}\n";
        echo "조회횟수 : {$json->cnt}\n";
        echo "조회한도 : {$json->maxcnt}\n";

        foreach ($json->post as $key=>$value) {
                 //$value->postnew;             // 새우편번호 (5자리)
                 //$value->post;                // 우편번호   (6자리)
                 //$value->addr_1;              // 시/도
                 //$value->addr_2;              // 구
                 //$value->addr_3;              // 도로명
                 //$value->addr_4;              // 동/건물
                 //$value->addr_5;              // 구주소 (도로명주소1:1매칭) // 도로명주소검색일경우만 리턴
                 //$value->addr_eng;            // 영문주소 // 도로명주소검색일경우만 리턴

                 print_r($value);
        }
    } else if ($json->result == 0) {
        echo "검색결과가 없습니다.";
    } else if ($json->result == -1) {
        echo "검색결과가 너무 많습니다. 입력하신 검색어 $search 뒤에 단어를 추가해서 검색해보세요.";
    } else if ($json->result < 0) {
        echo "검색실패 : ".$json->message;
    }

    // $result  "-1"  일경우 :  너무많은검색결과 1000건이상
    // $result  "-2"  일경우 :  서버 IP 미인증
    // $result  "-3"  일경우 :  조회횟수초과
    // $result  "-4"  일경우 :  미인증 사용자

    // 실제 구현 소스는 위에까지입니다. 아래는 소켓함수(curl로 구현가능)
    function HTTP_Post($URL,$data) { 
        $URL_Info=parse_url($URL);
        if(!empty($data)) foreach($data AS $k => $v) $str .= urlencode($k).'='.urlencode($v).'&';
        $path = $URL_Info["path"];
        $host = $URL_Info["host"];
        $port = $URL_Info["port"];
        if (empty($port)) $port=80;
        $result = "";
        $fp = fsockopen($host, $port, $errno, $errstr, 30);
        $http  = "POST $path HTTP/1.0\r\n";
        $http .= "Host: $host\r\n";
        $http .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $http .= "Content-length: " . strlen($str) . "\r\n";
        $http .= "Connection: close\r\n\r\n";
        $http .= $str . "\r\n\r\n";
        fwrite($fp, $http);
        while (!feof($fp)) { $result .= fgets($fp, 4096); }
        fclose($fp);
        return $result;
    }
?>
* 검색어 가이드 *

1. 우편번호 검색가능 : "153787" 또는 "153-787"
2. 여러단어 검색가능 : "가산디지털 에이스하이엔드" 또는 "서울 금천 가산 에이스"
3. 도로명주소와 1:1 매치되는 구주소제공(도로명주소 밑에 구주소표시때 사용)
4. 검색결과가 1000건이상의 경우 -1값 리턴 (소스참조)
5. 구주소로 도로명주소 찾기( type=newdong) 
   TEST페이지처럼  동과 번지를 분리 입력받고, 검색어값은 "가산동 371-50" 처럼
   API에 사용하시면 됩니다!
   도로명주소에 매치되는 구주소의 경우 DB에 "고척1동/고척2동 => 고척동" 으로 통일되서
   제공되기때문에 자동으로 "고척동"으로 치환제공합니다. 

   "고척2동 339" "고척동 339번지" "고척 339" "고척2동 339"

   => 검색결과 같음
   => 번지앞만 입력해도 결과값을 받을 수 있니다. 
      (지마켓의 경우 동/번지가 일치해야 결과제공, "고척2동" 검색안됨)


  - 페이징을 제공안하는 이유
    검색결과가 많을경우 수천건을 수십페이지를 눌러가며 찾는것보다 검색단어를 한번더
    입력하는게 더 효율적이기 때문입니다.

  - 서울/부산등 지역 선택이 없는 이유
    도로명이 중복되는 경우가 많지 않습니다. 따로 선택하는것이 의미가 없습니다.
    지마켓등에서 실제 검색해보세요.ㅎ 너무나 불편합니다.

    도로명주소의 경우 700만건에 이르는 데이터에서 검색하기때문에 충분한 안내가 필요합니다.
ex) 검색결과가 너무 많습니다. 입력하신 검색어 "가산" 뒤에 번지나 건물명을 추가입력해주세요.


하루 5000건 이상 조회 스폰안내

* 하루 5천건이상 조회에 대한 (주)피에이치피스쿨(이하 '스쿨') 의 생각은 아래와 같습니다.

- 스쿨은 현재 www.phpschool.com 의 개발자 커뮤니티를 운영중입니다.
- 도로명주소 우편번호는 데이터 700만건으로 DB량이나 DB검색만으로 구현하기 어려운점(서버부하등)이 많습니다.
- 따라서 우편번호 API를 제공하게 된 계기는 영세한곳(웹호스팅이용자)이나 방문빈도가 낮은곳을 대상으로 제공하게 되었습니다.

- 하루 5000건 조회시 평균적으로 신규가입자가 100명~300명이상되는 상위 사이트라고 판단되어집니다.
- 현재(2015/08/01) 2500개업체가 이용중이나 평균 하루 50건정도 조회를 보이고 있습니다.
- 그외 중견기업에서는 자체구축을 해야하나 자체구축 혹은 시급히 처리해야하는 업체를 위해서 스폰을 받습니다.
- 스폰비는 순수하게 www.phpschool.com 의 개발자 커뮤니티에서 스쿨커뮤니티 활성화를 위한 이벤트 상품으로만 쓰입니다.

- 스폰비용은 월1~5만원(혹은 상품협찬)내 혹은 그이하로 제공해주면, 스쿨에서 이벤트시 해당업체명(선택) 제공 이벤트로 사용합니다.

* 걱정하지마세요!
- 하루 5000건이상 쿼리시 스폰에 대한 부분이 부담되시는 업체는 소명내용을 메일로 주시면 저희가 판단해서 무료로 제공해드리겠습니다!
- 부담없이 문의주세요 : 문의 member@phpschool.com (제목에 [도로명주소API문의] 기재요망)