공공 API 요청 및 출력 -3-

jihan kong·2022년 2월 11일
0

API 실습

목록 보기
5/5
post-thumbnail

지난 포스팅에서 인증키에 해당하는 url을 객체에 집어넣고 통신할 수 있게끔 하는 URLConnection 객체를 리턴해서 이를 통해 실제 접속하는 것까지 해보았다. (response code가 200이 뜨는 것으로 검증)

그렇다면 이제 인증키에 해당하는 API문서 내용을 이클립스 콘솔에 출력해보자.



ApiJson.java

package data.api.json;

import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class ApiJson {
	public static void main(String[] args) {
		
		
		BufferedReader br = null;	// ---> 1.		
		try {	// ---> 2.
				String urlStr = "http://apis.data.go.kr/B552061/jaywalking/getRestJaywalking?serviceKey=3OV9AWAJeu0xZpMYtAEE4n9ALJxdXVbHzzrzdW1W%2BeQxc6O0nCihEK90fEg2%2BlBuLY%2BOwQQZTV6OXgFzcBKfFQ%3D%3D&searchYearCd=2017&siDo=11&guGun=680&type=json&numOfRows=10&pageNo=1";
                // ---> 3.
				URL url = new URL(urlStr);  // ---> 4.
				
                HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
                // ---> 5.
				urlConn.setRequestMethod("GET");
				urlConn.setRequestProperty("Content-type", "application/json");
				System.out.print("Response code:" + urlConn.getResponseCode()); 
                // ---> 6.
				
				br = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8"));
				// ---> 7.
			
			
				/* ---> 8.
				String rst="";
				String line;
				while((line = br.readLine())!=null) {
					rst += line + "\n";
				}
				System.out.println(rst);
				*/
                
                // ---> 9.
				StringBuilder sb = new StringBuilder ();
				String line;
                
				while ((line = br.readLine())!= null) {
					sb.append(line);
					}
				System.out.println(sb.toString());
			
				// ---> 10.
				br.close();
				urlConn.disconnect();
			}
			catch(Exception e) {
				System.out.println(e.getMessage());
			}
		}
}

< 코드 설명 > (주석처리된 넘버 참조)

1 ~ 6. 지난 포스팅을 참조.

  1. 우리는 위에서 Buffer를 사용할 수 있게끔 만들어 놓았다. 이를 사용해보자. (BufferedReader함수) BufferedReader 함수는 InputStreamReader 의 객체를 입력값으로 사용한다. 따라서 InputStreamReader object를 new로 생성한 것이다.
  2. 결과를 출력하기 위해 변수를 선언하고 while 반복문으로 읽어 사용한다. 그러나 우리는 이 방식을 사용하지않고 다음 9번의 방식을 사용할 것이다.
  3. 지난 포스팅에서 언급했듯 그냥 String 객체를 사용하는 것보다 StringBuilder 를 사용하는 것이 여러모로 장점이 많다.
  4. 통신이 끝나면 연결을 해제한다.


    이제 실제로 코드를 실행해보면,

    Response codeStringBuilder를 while문으로 print한 결과가 나온다. API json의 내용이 출력된 것을 확인할 수 있다.
profile
학습하며 도전하는 것을 즐기는 개발자

0개의 댓글