소스 -
@GetMapping("/api/gong")
public String gong(@ModelAttribute("orderGongSearch") OrderGongSearch orderGongSearch , Model model) throws IOException, ParseException {
StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty"); /*URL*/
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + serviceKey); /*Service Key*/ //고유의 서비스키
urlBuilder.append("&" + URLEncoder.encode("returnType","UTF-8") + "=" + URLEncoder.encode("json", "UTF-8")); /*xml 또는 json*/
urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("100", "UTF-8")); /*한 페이지 결과 수*/
urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode("1", "UTF-8")); /*페이지번호*/
urlBuilder.append("&" + URLEncoder.encode("sidoName","UTF-8") + "=" + URLEncoder.encode("경기", "UTF-8")); /*시도 이름(전국, 서울, 부산, 대구, 인천, 광주, 대전, 울산, 경기, 강원, 충북, 충남, 전북, 전남, 경북, 경남, 제주, 세종)*/
urlBuilder.append("&" + URLEncoder.encode("ver","UTF-8") + "=" + URLEncoder.encode("1.0", "UTF-8")); /*버전별 상세 결과 참고*/
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
System.out.println("Response code: " + conn.getResponseCode());
BufferedReader rd;
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream(),"UTF-8"));
}
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
conn.disconnect();
System.out.println(sb.toString());
// 1. 문자열 형태의 JSON을 파싱하기 위한 JSONParser 객체 생성.
JSONParser parser = new JSONParser();
int i = sb.toString().indexOf("\"items\":[{");
int j = sb.toString().indexOf(",\"pageNo\"");
// 2. 문자열을 JSON 형태로 JSONObject 객체에 저장.
JSONObject obj = (JSONObject)parser.parse("{"+sb.toString().substring(i,j)+"}");
// 3. 필요한 리스트 데이터 부분만 가져와 JSONArray로 저장.
JSONArray dataArr = (JSONArray) obj.get("items");
// 4. model에 담아준다.
if(!StringUtils.isEmpty(orderGongSearch.getStationName())){
JSONArray dataArr2 = new JSONArray();
for (int k = 0; k < dataArr.size(); k++) {
if(((JSONObject) dataArr.get(k)).get("stationName").equals(orderGongSearch.getStationName())) {
dataArr2.add(dataArr.get(k));
}
}
model.addAttribute("data",dataArr2);
}else {
model.addAttribute("data",dataArr);
}
return "order/orderList2";
}
'SpringFramework | SpringBoot' 카테고리의 다른 글
클라이언트에서 서버로 데이터를 전송하는 방법 (1) | 2023.11.24 |
---|---|
자세한 리퀘스트 정보 로그에 출력하기 (1) | 2023.11.24 |
스프링에서 어디서나 HttpServletRequest 얻는방법 (0) | 2023.11.10 |
스프링의 기본 동작원리 (0) | 2023.11.10 |
스프링 Transactional 정리 (0) | 2023.11.10 |