지난 포스팅에서 인증키에 해당하는 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. 지난 포스팅을 참조.
BufferedReader
함수는 InputStreamReader
의 객체를 입력값으로 사용한다. 따라서 InputStreamReader
object를 new로 생성한 것이다.while
반복문으로 읽어 사용한다. 그러나 우리는 이 방식을 사용하지않고 다음 9번의 방식을 사용할 것이다.String
객체를 사용하는 것보다 StringBuilder
를 사용하는 것이 여러모로 장점이 많다. Response code
와 StringBuilder
를 while문으로 print한 결과가 나온다. API json의 내용이 출력된 것을 확인할 수 있다.