우체국 우편번호 API 이용방법

 

 

 

 

 

 

 

 

 

기능 구현

1.  우체국 계약고객전용시스템 사이트에서 인증키 발급

 

 

 

2.  system.properties 파일에 인증키 저장 (혹은 application.properties)

### Postcode API App Key ###
postcode.app_key = 발급받은 인증키

 

 

3.  Jsoup Java HTML Parser를 pom.xml에 추가

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.15.3</version>
</dependency>

 

Jsoup

  • 간단히 외부 url에 접근하여 문서를 가져올 수 있게 지원
  • Html parse 라이브러리지만 xml도 파싱이 가능

 

 

 

4.  Controller에 코드 작성

    @Autowired
    protected Properties systemProp; // properties에 저장한 인증키 사용하기 위함


    @RequestMapping("/zipCodeList.do")
    public ModelAndView zipCodeList(UiDTO dto, HttpServletRequest request, HttpServletResponse response) throws Exception {
        Map<String, Object> data = new HashMap<String, Object>();

        String ZIPCODE_API_KEY = systemProp.getProperty("postcode.app_key");
        String ZIPCODE_API_URL = "http://biz.epost.go.kr/KpostPortal/openapi2";

        String address = dto.getString("strAddress"); // 프론트에서 입력받은 주소
        String page = dto.getString("strPage"); // 프론트에서 입력받은 이동할 페이지

        StringBuilder queryUrl = new StringBuilder();
        queryUrl.append(ZIPCODE_API_URL);
        queryUrl.append("?regkey=");
        queryUrl.append(ZIPCODE_API_KEY);
        queryUrl.append("&target=postNew");
        queryUrl.append("&query=");
        queryUrl.append(address.replaceAll(" ", ""));
        queryUrl.append("&countPerPage=50"); // 최대 출력 건수인 50으로 설정
        queryUrl.append("&currentPage=");
        queryUrl.append(page);

	// Jsoup을 통해 요청URL에 대한 결과 XML을 파싱
        Document document = Jsoup.connect(queryUrl.toString()).get();
        String errorCode = document.select("error_code").text();

        if(errorCode == null || errorCode.equals("")) {
            Elements elements = document.select("item");
            List<Map<String, Object>> list = new ArrayList<>();
            for(Element element : elements){
                Map<String, Object> param = new HashMap<String, Object>();
                param.put("ZIPCODE", element.select("postcd").text());
                param.put("ADDR", element.select("address").text());
                param.put("ADDR2", element.select("addrjibun").text());
                list.add(param);
            }

            // list 결과 put
            data.put("listMain", list);
            data.put("strTotalCount", document.select("totalCount").text());
            data.put("strTotalPage", document.select("totalPage").text());
            data.put("strCurrentPage", document.select("currentPage").text());
            data.put("strError", "");
        } else{
            String errorMessage = document.select("message").text();
            //data.put("errorCode", errorCode);
            data.put("strError", errorMessage);
        }

        return makeModel(data);
    }

 

 

 

 

 

 

참고 사이트

https://pjsprogram.tistory.com/6

 

 

 

'Study > Spring' 카테고리의 다른 글

[Spring] 4. IoC  (0) 2023.02.22
[Spring] 3. 메이븐 Spring Project 생성  (0) 2023.02.16
[Spring] 2. 스프링과 메이븐  (0) 2023.02.16
[Spring] 1. 스프링 프레임워크 개요  (0) 2023.02.16

+ Recent posts