우체국 우편번호 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("¤tPage=");
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 |