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