관리 메뉴

제뉴어리의 모든것

HttpsURLConnection을 이용하여 네이버 맵 api 호출시 주의사항 본문

JAVA

HttpsURLConnection을 이용하여 네이버 맵 api 호출시 주의사항

제뉴어리맨 2021. 3. 5. 21:21
		String addr = URLEncoder.encode("수정구 대왕판교로 815","utf-8"); //한글은 무조건 utf-8로 인코딩 해줘야함...
        String api = "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query="+addr;
        StringBuffer sb = new StringBuffer();

        try {
            URL url = new URL(api);
            HttpsURLConnection http = (HttpsURLConnection)url.openConnection();
            http.setRequestProperty("Content-Type", "application/json");
            http.setRequestProperty("X-NCP-APIGW-API-KEY-ID", CLIENT_ID);
            http.setRequestProperty("X-NCP-APIGW-API-KEY", CLI_SECRET);
            http.setRequestMethod("GET");
            http.connect();

            InputStreamReader in = new InputStreamReader(http.getInputStream(),"utf-8");
            BufferedReader br = new BufferedReader(in);

            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line).append("\n");
            }



            JSONParser parser = new JSONParser();
            JSONObject jsonObject;
            JSONObject jsonObject2;
            JSONArray jsonArray;
            String x = "";
            String y = "";


            System.out.println("결과 >>>>>>>>>> : " + sb.toString());

//트리형태로 온 JSON 파싱 :: 멋쟁이인중(saltkeeper) 블로그에서 도움 받음. 감사합니다^^
            jsonObject = (JSONObject)parser.parse(sb.toString());
            jsonArray = (JSONArray)jsonObject.get("addresses");
            for(int i=0;i<jsonArray.size();i++){
                jsonObject2 = (JSONObject) jsonArray.get(i);
                if(null != jsonObject2.get("x")){
                    x = (String) jsonObject2.get("x").toString();
                }
                if(null != jsonObject2.get("y")){
                    y = (String) jsonObject2.get("y").toString();
                }
            }

            br.close();
            in.close();
            http.disconnect();

            System.out.println("Latitude >> " + y + "Longitude >> " + x);

        } catch (IOException e) {

        }

 

위와같은 소스가 있을때 url을 작성하는

String addr = URLEncoder.encode("수정구 대왕판교로 815","utf-8"); 처럼

url상에 한글이 있을 경우 꼭!! utf-8로 인코딩 해줘라.. 그렇지 않으면 결과는 success지만 데이터가 안 넘어옴..