‘변동자료 연계서비스’를 통해 매일 최신의 도로명주소
일일 변동자료를 다운로드 받으실 수 있습니다.

※ 도로명주소 변동자료 연계서비스 가이드

  1. 변동자료 연계서비스 신청서
  2. ㆍ변동자료 연계서비스 신청서 [다운로드]

  3. 클라이언트 API 다운로드
  4. ㆍADSClient_JAVA.zip [다운로드]
  1. API 적용 요약 가이드

  2. ㆍAPI 다운로드 및 설치
변동자료 연계서비스 클라이언트 API에는 아래와 같은 파일이 제공됩니다.

- ADSClient-x.x.jar : 변동자료 연계서비스 클라이언트 라이브러리(x.x는 버전 넘버) 입니다. 이 jar 파일은 적용하고자 하는 application의 classpath에 위치해야 합니다.

- ADSClient-x.x.zip : 클라이언트 라이브러리의 소스파일은 입니다. 이 zip 파일을 통해서 API를 통해서 개발하지 않고, 소스를 수정하여 사용하실 수 있습니다.

- ADSClient-x.x-doc.zip : 해당 API의 Java Document 입니다. 해당 라이브러리에서 사용되는 함수에 대한 자세한 설명을 보실수 있습니다.

- 국가주소연계서비스_변동자료_연계서비스_가이드_JAVA.pdf : 변동자료 연계서비스 가이드 문서를 통해서 변동자료 연계서비스를 적용하기 위한 설명을 확인할 수 있습니다.


  • ㆍ주요 입력 파라미터 정보
  • 1. 승인키[필수] : 변동자료 연계서비스 사용을 위해 제공받은 승인키
    2. 요청자료 구분[필수] : 제공 받고자 하는 요청자료의 구분값(가이드 문서 참고)
    3. 변동자료 날짜구분[필수] : 일변동 자료(D), 월변동 자료(M) 으로 구분되며, 매칭데이터및 지도 자료는 D만 가능함, 기초구역관련 정보는 M 
    4. 재반영 포함여부[필수] : 재반영 데이터를 포함하여 제공받을지 여부(기본으로 Y 설정을 통해서, 재반영 데이터도 일변동 자료 제공시 함께 적용할 수 있도록 해야합니다.)
    5. 요청 데이터 일자(From) : 일반적으로 일변동 자료 요청시에는 해당 값을 요청하지 않습니다. 
    6. 요청 데이터 일자(To) : 일반적으로 일변동 자료 요청시에는 해당 값을 요청하지 않습니다.
    
    1. ㆍAPI 적용 샘플 소스
    2. 
      import java.io.File;
      import java.io.FileInputStream;
      import java.util.ArrayList;
      import java.util.Properties;
      // import 필요한 클래스 정보
      import kr.go.ads.client.ADSReceiver;
      import kr.go.ads.client.ReceiveData;
      import kr.go.ads.client.ReceiveDatas;
      
      public class UpdateClient {
      	public static void main(String[] args){
      		UpdateClient uc = new UpdateClient();
      		try{
      			uc.getAddrInfo();
      		}catch(Exception ex){
      			ex.printStackTrace();
      		}
      	}
      
      	public void getAddrInfo(){
      		ADSReceiver ads = new ADSReceiver();	// ADSReceiver 객체 생성
      		String app_key = "AAABBBCCC";		// 승인키
      		String date_gb = "D";				// 날짜 구분
      		String retry_in = "Y";				// 재반영 요청 여부
      		String cntc_cd = "007000";			// 자료 요청 구분
      		String req_date_from;				// 요청일자(From)
      		String req_date_to;					// 요청일자(To)
      		
      		// 일변동 자료를 저장할 장소를 설정합니다.
      		ads.setFilePath("addrInfo");
      		ads.setCreateDateDirectory(ADSUtils.YYMMDD);
      		
      		try {
      			// 변동자료 연계서비스 요청 및 응답데이터 확인
      			ReceiveDatas receiveDatas = ads.receiveAddr(app_key, date_gb, cntc_cd, retry_in, req_date_from, req_date_to);
      			
      			/* --------------------------------- 응답 결과 확인 --------------------------------- */
      			if(receiveDatas.getResult() != 0){
      				if(receiveDatas.getResult() == -1){
      					// 서버 접속 실패 : 잠시후 재 시도 하시기 바랍니다.
      					System.out.println("서버 접속 실패");	
      				}
      				// 서버 페이지 오류 사항 확인
      				System.out.println("Result code : "+receiveDatas.getResult());
      				System.out.println("Response code : "+receiveDatas.getResCode());
      				System.out.println("Response Msg : "+receiveDatas.getResMsg());
      				System.out.println("Total count : "+receiveDatas.getResTotalCnt());
      				System.out.println("Normal count : "+receiveDatas.getResNormalCnt());
      				System.out.println("Retry count : "+receiveDatas.getResRetryCnt());
      				return;
      			}
      			
      			// 서버 응답 확인
      			System.out.println("Response code : "+receiveDatas.getResCode());		// 응답코드
      			System.out.println("Response Msg : "+receiveDatas.getResMsg());			// 응답메시지
      			System.out.println("Total count : "+receiveDatas.getResTotalCnt());		// 전체 자료수
      			System.out.println("Normal count : "+receiveDatas.getResNormalCnt());	// 변동 자료수
      			System.out.println("Retry count : "+receiveDatas.getResRetryCnt());		// 재반영 자료수
      			
      			if(!"P0000".equals(receiveDatas.getResCode())){
      				// 거절 응답
      				return;
      			}
      			/* --------------------------------- 응답 결과 완료  --------------------------------- */
      
      			
      			// 결과 데이터 정렬
      			ArrayList result = receiveDatas.getReceiveDatas(ADSUtils.UPDATE_ASC);
      			Iterator itr = result.iterator();
      			while(itr.hasNext()){
      				// 결과 데이터 건별 정보 확인
      				ReceiveData receiveData = (ReceiveData)itr.next();
      				System.out.print(" CNTC : ");
      				System.out.print(receiveData.getCntcCode());
      				System.out.print(" RES_CODE : ");
      				System.out.println(receiveData.getResCode());
      				if(!"P0000".equals(receiveData.getResCode())){
      					// 해당 파일응답 에러. 특히 E1001 인경우, 해당 파일을 아직 생성하지 못한 응답으로 추후 재시도 필요.
      					System.out.println("해당파일에 대한 응답이 정상이 아니기에 재 요청 필요");
      				}
      			}
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      	}
      }
      					
      ADSReceiver 클래스의 receiveAddr()함수를 호출하여, 데이터를 요청합니다.
      receiveAddr()함수에 사용되는 입력파라미터는 app_key, date_gb, cntc_cd, retry_in, req_date_from, req_date_to입니다.
      결과 데이터는 ReceiveDatas 객체로 반환되며, 이를 getReceiveDatas(int order)를 통해서 정렬하여 결과 데이터를 ArrayList 타입으로 결과를 반환합니다
    3. 1. 데이터 파일 저장 경로 설정
    4. 
      // 파일 저장 경로 등록
      ADSReceiver ads = new ADSReceiver();
      ads.setFilePath("addrInfo");						// 파일을 저장할 기본 Path를 지정합니다.
      ads.setCreateDateDirectory(ADSUtils.YYMMDD);			// 날짜형식의 하위 디렉토리를 생성합니다. 날짜 형식은 YYMMDD 입니다.
      ads.setUsingDate(ADSUtils.MAKE_DATE);				// 파일 생성일을 기준으로 데이터를 저장합니다.
      
      
      제공받은 파일을 저장하는 경로를 설정할 수 있습니다.
      ads.setFilePath(String filePath)로 파일을 저장할 기본 Path를 설정합니다.
      setCreateDateDirectory(String datePattern)로 해당 날짜형식의 하위 디렉토리를 자동 생성하도록 할 수 있습니다.
      입력 파라미터인 String datePattern값이 null 이면 기본 'YYYYMMDD' 형식의 디렉토리에 변동 자료가 저장됩니다.
      입력 파라미터는 ADSUtils.YYYYMMDD, ADSUtils.YYMMDD, ADSUtils.YYYYY, ADSUtils.MMDD 4종류를 제공하고 있습니다.
      setUsingDate(int usingDatePattern) 을 통해서, 디렉토리를 생성시 일변동자료의 기준일, 일변동자료 파일 생성일을 기준으로 해당 디렉토리에 파일이 저장됩니다.
      일변동자료 기준일(ADSUtils.FILE_DATE) : 변동내역의 기준일자 입니다. 예) 20150101일 변동 자료 - > 20150101일자에 해당하는 디렉토리에 파일이 저장됩니다.
      일변동자료 생성일(ADSUtils.MAKE_DATE) : 변동자료의 생성일자 입니다. 예) 20150101일 변동자료가 20150110일 생성된 경우 -> 20150110일자에 해당하는 디렉토리에 파일이 저장됩니다.
    5. 2. 변동자료 및 재반영 데이터 다운로드 서비스 호출
    6. 
      // 일변동자료 다운로드 호출함수
      ReceiveDatas receiveDatas = ads.receiveAddr(app_key, date_gb, cntc_cd, retry_in, req_date_from, req_date_to);
      
      // 재반영 다운로드 호출함수
      ReceiveDatas receiveDatas = ads.receiveRetry(app_key, date_gb, cntc_cd);
      
      변동자료 다운로드 서비스시에는 receiveAddr()함수를, 재반영 데이터 다운로드 서비스시에는 receiveRetry() 함수를 사용합니다.
      재반영 데이터 조회시에는 retry_in, req_date_from, req_date_to 파라미터가 필요하지 않습니다.
    7. 3. 결과 데이터 정렬
    8. 
      // 결과 데이터 Sort
      ArrayList result = receiveDatas.getReceiveDatas(ADSUtils.UPDATE_ASC);		// 반영 순서대로 정렬
      ArrayList result = receiveDatas.getReceiveDatas(ADSUtils.MAKE_ASC);			// 파일이 생성된 일자별 정렬
      
      
      다운로드 받은 결과 데이터를 원하는 방식으로 Sort를 수행해서 List를 전달합니다.
      입력파라미터 반영순서 정렬(ADSUtils.UPDATE_ASC) 파일생성일 정렬(ADSUtils.MAKE_ASC)
    9. 4. 결과 데이터 확인
    10. 
      // 결과 데이터 확인 : 데이터를 정렬하여 가져올 수 있습니다.
      ArrayList result = receiveDatas.getReceiveDatas(ADSUtils.UPDATE_ASC);
      Iterator itr = result.iterator();
      while(itr.hasNext()){
      	ReceiveData receiveData = (ReceiveData)itr.next();
      	System.out.print("DOWNLOAD FILE NAME:");
      	System.out.print(receiveData.getFileName());
      	System.out.print(" RETRY:");
      	System.out.print(receiveData.getRetryYn());
      	System.out.print(" MAKE DATE:");
      	System.out.print(receiveData.getCreateDate());
      	System.out.print(" FILE DATE:");
      	System.out.println(receiveData.getFileDate());
      	System.out.print(" CNTC : ");
      	System.out.print(receiveData.getCntcCode());
      	System.out.print(" RES_CODE : ");
      	System.out.println(receiveData.getResCode());
      }
      
      제공 받은 데이터의 정보를 확인 할 수 있습니다.
      제공 받은 데이터 파일을 정렬하여 ArrayList로 결과값을 제공 받을 수 있습니다.
      제공받은 각 파일의 정보는 ReceiveData 객체로 제공되며, 아래 와 같이 확인할 수 있습니다.
      ㆍreceiveData.getFileName() : 파일명 정보
      ㆍreceiveData.getFilePath() : 파일 절대경로
      ㆍreceiveData.getRetryYn() : 재반영 데이터 여부(Y:재반영데이터, N:일반 변동데이터)
      ㆍreceiveData.getFileDate() : 변동자료 파일기준일(YYYYMMDD 형식)
      ㆍreceiveData.getCreateDate() : 변동자료 파일 생성일(YYYYMMDD 형식)
      ㆍreceiveData.getCntcCode() : 요청자료 코드
      ㆍreceiveData.getFileSize() : 파일 사이즈(byte)
      ㆍreceiveData.getResCode() : 응답코드
      ㆍreceiveData.getResMsg() : 응답메시지(한글)