반응형

외부 라이브러리를 이용하지 않고 java (1.8 기준) 만으로 http client (get method) 를 구현하는 코드를 공유합니다.


...
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
...
 
...
 
  public static String get(String getUrl) {
    URL url = null;
    try {
      url = new URL(getUrl);
    } catch (MalformedURLException e1) {
      throw new RuntimeException("URL형식을 확인해주세요.", e1);
    }
    HttpURLConnection con = null;
    try {
      con = (HttpURLConnection) url.openConnection();
    } catch (IOException e1) {
      throw new RuntimeException("연결 중 입출력 오류가 발생하였습니다.", e1);
    }
    try {
      con.setRequestMethod("GET");
    } catch (ProtocolException e) {
      throw new RuntimeException("연결 중 프로토콜 오류가 발생하였습니다.", e);
    }
 
    con.setRequestProperty("Content-Type""text/html");
    con.setConnectTimeout(5000); // 연결 타임아웃
    con.setReadTimeout(5000); // 읽기 타임아웃
    con.setInstanceFollowRedirects(true); // 리다이렉트 자동
 
    try {
      int status = con.getResponseCode();
      if (status != HttpURLConnection.HTTP_OK) {
        throw new RuntimeException("정상 응답 코드가 아닙니다. " + status);
      }
    } catch (IOException e) {
      throw new RuntimeException("응답을 받는 중 오류가 발생하였습니다.", e);
    }
    StringBuffer content = new StringBuffer();
    try {
      BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
      String inputLine;
      while ((inputLine = in.readLine()) != null) {
        content.append(inputLine);
      }
      in.close();
    } catch (IOException e) {
      throw new RuntimeException("응답을 읽는 중 오류가 발생하였습니다.", e);
    }
    con.disconnect();
    return content.toString();
  }
 
...



반응형

+ Recent posts