1. 공공 데이터 포털 둘러보기
공공데이터(Public Data)는 정부, 공공기관, 지방자치단체 등이 법령에 따라 생성, 수집, 관리하는 데이터로서, 누구나 자유롭게 이용할 수 있도록 공개된 데이터를 의마한다.
공공데이터 포털에서 기상청_단기예보 API 를 선택, 활용신청을 선택한.
목적을 선택 후 활용 신청을 한다.
마이 페이지 - 데이터 활용 - Open API - 활용 신청 현황을 들어간다.
End Point : 클라이언트가 요청을 보내는 URL
일반 인증키(Encoding) : URL에 포함될 수 있도록 특수 문자를 인코딩한 형태. 인코딩된 키는 URL의 쿼리 파라미터로 사용하기 적합하다
일반 인증키(Decoding) : URL 인코딩이 되지 않은 순수한 문자열이다.
== 같은 문자는 키워드 값으로 URL에 사용할 수 없다. 주소를 파싱하는데 기준이 되는 키워드이기 때문이다. 따라서 인코딩된 인증키를 URL에 사용해야 한다. 다만 브라우저나 특정 라이브러리는 자동으로 변환해주기 때문에 디코딩 인증키를 사용해보고 안되면 인코딩 인증키를 사용하자.
아래에 활용신청 상세기능정보에서 값을 넣어 테스트를 해볼 수 있다. dataType을 json으로 넣고 테스트한다.
https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey=GwP4SAIbheNGehkwEohRbKiZarjkYCbbT0%2FKzCWnPd7XL0vo97Tvx8b1Q4wwORGuGx47qa34CKrCDe4AL4vCrw%3D%3D&pageNo=1&numOfRows=1000&dataType=json&base_date=20240607&base_time=1900&nx=55&ny=127
미리보기를 누르면 데이터가 조회된다.
어떤 값이 온도인지는 참고문서를 확인하면 알 수 있다. T1H가 온도이다.
2. Java 샘플 코드 테스트
/* Java 1.8 샘플 코드 */ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.IOException; public class ApiExplorer { public static void main(String[] args) throws IOException { StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst"); /*URL*/ urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=서비스키"); /*Service Key*/ urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode("1", "UTF-8")); /*페이지번호*/ urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("1000", "UTF-8")); /*한 페이지 결과 수*/ urlBuilder.append("&" + URLEncoder.encode("dataType","UTF-8") + "=" + URLEncoder.encode("XML", "UTF-8")); /*요청자료형식(XML/JSON) Default: XML*/ urlBuilder.append("&" + URLEncoder.encode("base_date","UTF-8") + "=" + URLEncoder.encode("20210628", "UTF-8")); /*‘21년 6월 28일 발표*/ urlBuilder.append("&" + URLEncoder.encode("base_time","UTF-8") + "=" + URLEncoder.encode("0600", "UTF-8")); /*06시 발표(정시단위) */ urlBuilder.append("&" + URLEncoder.encode("nx","UTF-8") + "=" + URLEncoder.encode("55", "UTF-8")); /*예보지점의 X 좌표값*/ urlBuilder.append("&" + URLEncoder.encode("ny","UTF-8") + "=" + URLEncoder.encode("127", "UTF-8")); /*예보지점의 Y 좌표값*/ 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())); } 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(); System.out.println(sb.toString()); } }
오픈API 상세 페이지 하단에서 샘플코드를 확인할 수 있다.
새로운 자바 프로젝트를 만든다.
샘플 코드를 넣고 실행하면 이런 출력을 볼 수 있다.
Share article