‘변동자료 연계서비스’를 통해 매일 최신의 도로명주소
일일 변동자료를 다운로드 받으실 수 있습니다.
※ 도로명주소 변동자료 연계서비스 가이드
‘변동자료 연계서비스’를 통해 매일 최신의 도로명주소
일일 변동자료를 다운로드 받으실 수 있습니다.
※ 도로명주소 변동자료 연계서비스 가이드
- 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) : 일반적으로 일변동 자료 요청시에는 해당 값을 요청하지 않습니다.
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()함수를 호출하여, 데이터를 요청합니다.
// 파일 저장 경로 등록
ADSReceiver ads = new ADSReceiver();
ads.setFilePath("addrInfo"); // 파일을 저장할 기본 Path를 지정합니다.
ads.setCreateDateDirectory(ADSUtils.YYMMDD); // 날짜형식의 하위 디렉토리를 생성합니다. 날짜 형식은 YYMMDD 입니다.
ads.setUsingDate(ADSUtils.MAKE_DATE); // 파일 생성일을 기준으로 데이터를 저장합니다.
제공받은 파일을 저장하는 경로를 설정할 수 있습니다.
// 일변동자료 다운로드 호출함수
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() 함수를 사용합니다.
// 결과 데이터 Sort
ArrayList result = receiveDatas.getReceiveDatas(ADSUtils.UPDATE_ASC); // 반영 순서대로 정렬
ArrayList result = receiveDatas.getReceiveDatas(ADSUtils.MAKE_ASC); // 파일이 생성된 일자별 정렬
다운로드 받은 결과 데이터를 원하는 방식으로 Sort를 수행해서 List를 전달합니다.
// 결과 데이터 확인 : 데이터를 정렬하여 가져올 수 있습니다.
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());
}
제공 받은 데이터의 정보를 확인 할 수 있습니다.