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지만 데이터가 안 넘어옴..