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 |