활용신청 후 인증키받기
https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15073861
한국환경공단_에어코리아_대기오염정보
각 측정소별 대기오염정보를 조회하기 위한 서비스로 기간별, 시도별 대기오염 정보와 통합대기환경지수 나쁨 이상 측정소 내역, 대기질(미세먼지/오존) 예보 통보 내역 등을 조회할 수 있다.
www.data.go.kr
public String GetData() throws IOException {
StringBuilder urlBuilder = new StringBuilder(
"http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty"); /* URL */
urlBuilder.append("?" + URLEncoder.encode("serviceKey", "UTF-8")
+ "인증키"); /*
* 서비스
*/
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");
BufferedReader rd;
if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
conn.disconnect();
return sb.toString();
}
후에 json parser를 이용해 만들어진 문자열 데이터를 객체화한다.
public List<AirqualityDTO> DataSaveDust(String result) {
List<AirqualityDTO> dustList = new ArrayList<AirqualityDTO>();
JSONParser parser = new JSONParser();
JSONObject obj;
try {
obj = (JSONObject) parser.parse(result);
JSONObject parse_response = (JSONObject) obj.get("response");
JSONObject parse_body = (JSONObject) parse_response.get("body");
JSONArray parse_items = (JSONArray) parse_body.get("items");
JSONObject data;
String dataTime = ((JSONObject) parse_items.get(0)).get("dataTime").toString();
for (int i = 0; i < parse_items.size(); i++) {
AirqualityDTO dust = new AirqualityDTO();
data = (JSONObject) parse_items.get(i);
Object pm10Value = data.get("pm10Value");
Object pm25Value = data.get("pm25Value");
Object stationName = data.get("stationName");
dust.setPm10value((String) pm10Value);
dust.setPm25value((String) pm25Value);
dust.setStationname((String) stationName);
dust.setDatatime(dataTime);
dustList.add(dust);
}
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(dustList);
return dustList;
}
필요한 데이터(충전소이름과 미세먼지 농도, 초미세먼지 농도)를 추출해 알맞은 DTO타입 객체에 담아 JSP에서 구현하였다.
'Spring' 카테고리의 다른 글
[ Spring ] 스프링 개념정리 (0) | 2023.02.09 |
---|---|
프레임워크(Framework)와 라이브러리(Library)의 차이점 (0) | 2023.01.19 |
Maven이란? (0) | 2023.01.16 |
2023-01-16 JSON, AJAX 랭킹정보 (0) | 2023.01.16 |
2023-01-04 트랜잭션 처리하기 (0) | 2023.01.04 |
댓글