[java] url로 json 값 가져오기.



java URL로 json 값을 가져오겠습니다.



1. 특정 json 값을 가져올 수 있는 url이 존재해야합니다.


# soundcloud에서 Json 값을 가져오 겠습니다.

http://soundcloud.com/oembed?url=http%3A//soundcloud.com/forss/flickermood&format=json

String getJson = callURL("http://soundcloud.com/oembed?url=http%3A//soundcloud.com/forss/flickermood&format=json");


# URL 접속시 Json 값을 가져옵니다.






2. Json 읽어오기 위해서 특별한 Class를 생성하고, 메소드로 callURL 메소드를 생성합니다. 여기서 빠르게 처리하기 위해서 "static"으로 만들었음을 주의하세요.


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;

public class JsonReader {
public static String callURL(String myURL) {

System.out.println("Requeted URL:" + myURL);
StringBuilder sb = new StringBuilder();
URLConnection urlConn = null;
InputStreamReader in = null;

//error : Caused by: javax.net.ssl.SSLPeerUnverifiedException: Hostname not verified:
HostnameVerifier allHostsValid = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
//특정 hostname만 승인을 해주는 형태
return true;
}
};
//
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);

try {
URL url = new URL(myURL);
urlConn = url.openConnection();
if (urlConn != null)
urlConn.setReadTimeout(60 * 1000);
if (urlConn != null && urlConn.getInputStream() != null) {
in = new InputStreamReader(urlConn.getInputStream(), Charset.defaultCharset());
//charset 문자 집합의 인코딩을 사용해 urlConn.getInputStream을 문자스트림으로 변환 객체를 생성.
BufferedReader bufferedReader = new BufferedReader(in);
//주어진 문자 입력 스트림 inputStream에 대해 기본 크기의 버퍼를 갖는 객체를 생성.
if (bufferedReader != null) {
int cp;
while ((cp = bufferedReader.read()) != -1) {
sb.append((char) cp);
}
bufferedReader.close();
}
}
in.close();
} catch (Exception e) {
throw new RuntimeException("Exception URL:"+ myURL, e);
}
return sb.toString();
}
}






3. 결과화면



받은 문자를 json으로 확인.







블로그 이미지

미나미나미

,