본문 바로가기
프로그래밍/Spring

Spring - 우체국 주소검색 API to JSON

by 판데스 2013. 9. 10.
반응형

우체국 주소검색 API XML 값을 JSON 으로 변경


  @RequestMapping(value = "/Address.do", method = RequestMethod.GET)
  public @ResponseBody  Map<Object,Object>  addrApireturnJson(HttpServletRequest request){
    Map<Object,Object> returnMap = new HashMap<Object,Object>();
    String apiurl = new String();
    apiurl = "http://biz.epost.go.kr/KpostPortal/openapied?regkey=키&target=post&query=";

    List<AddressVO> address = new ArrayList<AddressVO>(); 
    HttpURLConnection conn = null;
    try{
      String searchAddr = null;
      if(request.getHeader("user-agent").matches(".*AppleWebKit.*")){ // 웹킷
        searchAddr = new String(request.getParameter("searchAddr").getBytes("ISO8859-1"),"UTF-8");
      }else if(request.getHeader("user-agent").matches(".*MSIE.*")){ //IE
        searchAddr = new String(request.getParameter("searchAddr").getBytes("ISO8859-1"),"euc-kr");
      }
      apiurl += URLEncoder.encode(searchAddr,"euc-kr");
      URL url = new URL(apiurl);

      conn = (HttpURLConnection) url.openConnection();
      conn.setRequestProperty("accept-language","ko");

      SAXBuilder builder = new SAXBuilder();

      Document doc= builder.build(conn.getInputStream());
      Element itemlist = doc.getRootElement().getChild("itemlist");
      List list = itemlist.getChildren(); 

      for(int i=0; i<list.size();i++){
        AddressVO setAddr = new AddressVO();
        Element item = (Element)list.get(i);
        setAddr.setAddress(item.getChildText("address"));
        setAddr.setPostcd(item.getChildText("postcd"));
        address.add(setAddr);
      }

      returnMap.put("addr", address);
    }catch(Exception e){
      e.printStackTrace();
    }
    return returnMap;
  }


반응형