- [Java] 106. 연습 문제: 오픈 API 사용해보기2024년 06월 04일
- Song hyun
- 작성자
- 2024.06.04.:30
728x90반응형[Java] 연습 문제: 오픈 API 사용해보기
아래의 주소에서 API 사용 허가를 받고, JAVA 코드 상에서 사용해보자.
https://www.data.go.kr/data/15059468/openapi.do?recommendDataYn=Y
(1) urlBuilder: URL을 만들거나, 선택할 URL을 생성한다.
(2) StringBuilder: 변경 가능한 문자열을 만들고, .append를 통해 문자열에 새로운 객체를 더한다.
(3) URLEncoder: 일반 문자열을 웹에서 사용되는 문자로 코드화시킨다.
(4) HttpURLConnection: 특정 HTTP 장치에 대한 지원을 제공하는 URLConnection.
(5) setRequestMethod
(6) setRequestProperty:
package ch01; 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 test2 { public static void main(String[] args) throws IOException { StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/MidFcstInfoService/getMidFcst"); /*URL*/ urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=j7A04sj%2B4J4hKHJePWishFk9iQF7PsQjtnPn5vGrQ8GrHhFwjthLyuO0YPnhdetjiZLp%2B0G4%2FxbFQenhifiuLw%3D%3D"); /*Service Key*/ urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode("1", "UTF-8")); /*페이지번호*/ urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("10", "UTF-8")); /*한 페이지 결과 수*/ urlBuilder.append("&" + URLEncoder.encode("dataType","UTF-8") + "=" + URLEncoder.encode("XML", "UTF-8")); /*요청자료형식(XML/JSON)Default: XML*/ urlBuilder.append("&" + URLEncoder.encode("stnId","UTF-8") + "=" + URLEncoder.encode("108", "UTF-8")); /*108 전국, 109 서울, 인천, 경기도 등 (활용가이드 하단 참고자료 참조)*/ urlBuilder.append("&" + URLEncoder.encode("tmFc","UTF-8") + "=" + URLEncoder.encode("202404060110", "UTF-8")); /*-일 2회(06:00,18:00)회 생성 되며 발표시각을 입력 YYYYMMDD0600 (1800)-최근 24시간 자료만 제공*/ 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()); } }
728x90반응형'Java > 네트워크 통신' 카테고리의 다른 글
[Java] 108. jsonPlaceHolder 파싱하기 (0) 2024.06.05 [Java] 107. 파싱/JSON 파싱 (0) 2024.06.05 [Java] 105. 공공 데이터 포탈 사용하기 (0) 2024.06.04 [Java] 104. HTTP 통신 도전 과제: 바이트 스트림 변환 (0) 2024.06.03 [Java] 103. 순수 자바 코드로 HTTP 서버 만들기 (0) 2024.06.03 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)