[JAVA] Open 날씨 API
(참고 site : http://yooic.tistory.com/43 , 감사합니다.)날씨 정보를 획득할 수 있는 OpenAPI가 있다.
http://openweathermap.org/
프로그램에서 날씨 정보를 쉽게 얻을 수 있다.
하지만 완전 무료는 아니다.
분당 60건의 조회는 무료로 사용할 수 있는데, 그 이상의 조회를 가능하게 하려면 돈을 지불해야 한다.
금액은 아래에서 확인가능하다.
http://openweathermap.org/price
아! 비쌀수록 더 많은 API를 제공한다.
도시 이름, zip code, GPS로 지역을 선택해서 해당 지역의 날씨 정보를 획득 할 수 있는데,
나는 GPS정보를 이용했다.
예제로 서울시청(위도 37.566386, 경도 126.977948)을 이용해보겠다.
날씨정보를 가져오는 방법은 RESTapi를 call하는 것 같다.
예제코드
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; public class WeatherByGPSApplication { public static void main(String[] args) { try{ //서울시청의 위도와 경도 String lon = "126.977948"; //경도 String lat = "37.566386"; //위도 //OpenAPI call하는 URL String urlstr = "http://api.openweathermap.org/data/2.5/weather?" + "lat="+lat+"&lon="+lon +"&appid=본인의키를넣으세요"; URL url = new URL(urlstr); BufferedReader bf; String line; String result=""; //날씨 정보를 받아온다. bf = new BufferedReader(new InputStreamReader(url.openStream())); //버퍼에 있는 정보를 문자열로 변환. while((line=bf.readLine())!=null){ result=result.concat(line); //System.out.println(line); } //문자열을 JSON으로 파싱 JSONParser jsonParser = new JSONParser(); JSONObject jsonObj = (JSONObject) jsonParser.parse(result); //지역 출력 System.out.println("지역 : " + jsonObj.get("name")); //날씨 출력 JSONArray weatherArray = (JSONArray) jsonObj.get("weather"); JSONObject obj = (JSONObject) weatherArray.get(0); System.out.println("날씨 : "+obj.get("main")); //온도 출력(절대온도라서 변환 필요) JSONObject mainArray = (JSONObject) jsonObj.get("main"); double ktemp = Double.parseDouble(mainArray.get("temp").toString()); double temp = ktemp-273.15; System.out.printf("온도 : %.2f\n",temp); bf.close(); }catch(Exception e){ System.out.println(e.getMessage()); } } }
실행결과
지역 : Seoul 날씨 : Clear 온도 : 17.57
JSONArray, JSONObject, JSONParser
답글삭제import를 받아오지못하는데 따로 작성해야할 부분이 있나요?
이 포스트에서 사용한 Json 라이브러리는 simple json 이라는 것입니다. 그래서 라이브러리를 프로젝트에 추가시켜 주셔야 import하실 수 있으세요.
삭제관련 글은 http://walkinpcm.blogspot.kr/2016/03/java-json-json-parsing.html 에 있습니다.
근데 저는 요즘 Java에서 Json을 쓸때 구글에서 제공하는 라이브러리인 Gson을 사용하고 있어요 이름만 Gson이고 json을 다루는 라이브러리인데 이에 대한 설명은 http://walkinpcm.blogspot.kr/2016/03/java-java-json-gson.html 여기에 있습니다.
또 궁금한 점이 있으시면 댓글 달아주세요. 함께 성장하는 좋은 기회 인것 같네요 ㅎㅎ
작성자가 댓글을 삭제했습니다.
답글삭제작성자가 댓글을 삭제했습니다.
답글삭제안녕하세요. 제 글을 읽어주셔서 감사합니다. 도움이 되는 정보를 드리고 싶네요.
삭제http://openweathermap.org/current
위 링크로 가시면 글에서 소개하는 날씨 API의 문서가 나타납니다. 현재날씨 정보를 가져오는 API에 대한 문서인데, API의 응답에 잘 보시면 temp.min과 temp.max가 있습니다. 해당 값들이 각각 최저온도와 최고온도를 나타내는것 같습니다. 다만 화씨로 되어있기 때문에 한국인이 보기 편하게 하시려면 섭씨로 변환하셔야 할 것 같습니다.
감사합니다.