[API] 기상특보 api 가져오기

Yuni·2023년 6월 16일
0

API

목록 보기
1/2
post-thumbnail

이건 뉴스를 불러온것과 별반 다를게없다
지점코드 + 시작날짜 + 마지막날짜를 지정해줘야하는데
엑셀파일을 불러와서 위도/경도와 맞춰서 가져오든가
아니면 select 박스를 이용해서 원하는 정보를 선택하면 넘겨서 가져오게끔 해야할꺼같다

Controller.java

@Controller
public class SpecialWeatherController {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @GetMapping("/specialWeather")
    public @ResponseBody String SpecialWeather(/*String stnId, String fromTmFc, String toTmFc, HttpServletRequest request*/) throws Exception {

        logger.info("SpecialWeather: ");

        String apikey = Key.weather;   // api 키
        String stnId = "108";           // 지점코드
        String fromTmFc = "20230611";   // 시작 날짜
        String toTmFc = "20230615";     // 마지막 날짜

        StringBuilder urlBuilder  = new StringBuilder("http://apis.data.go.kr/1360000/WthrWrnInfoService/getWthrWrnList");
        urlBuilder .append("?ServiceKey="+apikey);      // 서비스키
        urlBuilder .append("&pageNo=1");                // 페이지번호
        urlBuilder .append("&numOfRows=10");            // 한페이지 결과 수
        urlBuilder .append("&dataType=json");           // json, xml
        urlBuilder .append("&stnId=" + stnId);          // 지점코드
        urlBuilder .append("&fromTmFc=" + fromTmFc);    // 발표시각(From)
        urlBuilder .append("&toTmFc=" + toTmFc);        // 발표시각(To)

        URL url  = new URL(urlBuilder.toString());
        logger.info("urlBuilder.toString(): " + urlBuilder.toString());
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Content-type", "application/json");

        logger.info("Response code: " + conn.getResponseCode());

        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();

        logger.info("sb.toString(): "+sb.toString());

        org.json.simple.JSONObject ret = new JSONObject();
        ret.put("list", sb);

        logger.info("ret.toString(): "+ret.toString());

        return ret.toString();
    }

}
profile
backend developers

0개의 댓글