본문 바로가기
IT

Java에서 통신 시간 초과로 에러 날 경우 처리 하는 방법

by 달남 2025. 7. 2.

방안.1

try {
    URL url = new URL("http://example.com");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
    // 타임아웃 설정 (ms 단위)
    conn.setConnectTimeout(5000); // 연결 시도 타임아웃
    conn.setReadTimeout(5000);    // 데이터 수신 타임아웃

    int responseCode = conn.getResponseCode();
    System.out.println("Response Code: " + responseCode);

} catch (SocketTimeoutException e) {
    System.err.println("타임아웃 발생: " + e.getMessage());
} catch (IOException e) {
    System.err.println("입출력 에러: " + e.getMessage());
}



방안.2
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

HttpClient client = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(5))
        .build();

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("http://example.com"))
        .timeout(Duration.ofSeconds(5))
        .GET()
        .build();

try {
    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println("Response: " + response.body());
} catch (java.net.http.HttpTimeoutException e) {
    System.err.println("HTTP 타임아웃 발생: " + e.getMessage());
} catch (IOException | InterruptedException e) {
    System.err.println("기타 통신 오류: " + e.getMessage());
}


방안.3

RequestConfig config = RequestConfig.custom()
        .setConnectTimeout(5000)
        .setSocketTimeout(5000)
        .build();

CloseableHttpClient httpClient = HttpClients.custom()
        .setDefaultRequestConfig(config)
        .build();

HttpGet request = new HttpGet("http://example.com");

try (CloseableHttpResponse response = httpClient.execute(request)) {
    System.out.println(EntityUtils.toString(response.getEntity()));
} catch (SocketTimeoutException e) {
    System.err.println("소켓 타임아웃 발생: " + e.getMessage());
} catch (IOException e) {
    System.err.println("기타 에러: " + e.getMessage());
}




'IT' 카테고리의 다른 글

Audio editor app  (0) 2025.10.18
ALB(Application Load Balancer)와 60초 타임아웃, 그게 뭘까?  (0) 2025.09.30
이클립스 주석 단축키  (0) 2025.01.21
Dbeaver auto-commit 끄기  (0) 2025.01.15
DBeaver 백그라운드 작업 계속됨  (0) 2025.01.15

댓글