[java] HttpClient를 사용하여 소켓 연결 타임아웃을 설정하는 방법은?

Java에서 HttpClient를 사용하여 소켓 연결 타임아웃을 설정하는 방법에 대해 알아보겠습니다. HttpClient 라이브러리를 사용하면 HTTP 요청을 보내고 응답을 받을 수 있습니다. 소켓 연결 타임아웃을 설정하면 서버에 연결하는 데 소요되는 최대 시간을 지정할 수 있습니다.

HttpClient를 사용하여 소켓 연결 타임아웃을 설정하려면 다음 단계를 따릅니다.

  1. HttpClient 객체 생성:
    HttpClient httpClient = HttpClient.newBuilder()
       .connectTimeout(Duration.ofSeconds(10)) // 연결 타임아웃 설정
       .build();
    
  2. HttpRequest 생성:
    HttpRequest httpRequest = HttpRequest.newBuilder()
       .uri(new URI("http://example.com"))
       .GET()
       .build();
    
  3. 소켓 연결:
    HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
    

위의 코드에서 connectTimeout() 메서드를 사용하여 HttpClient에 연결 타임아웃 값을 설정할 수 있습니다. 이 예제에서는 10초로 설정되었습니다.

이렇게 설정된 소켓 연결 타임아웃은 HttpClient.send() 메서드를 호출할 때 사용됩니다. 소켓 연결이 지정된 시간 내에 이루어지지 않으면 java.net.SocketTimeoutException이 발생합니다.

위의 예제 코드를 사용하여 HttpClient를 생성하고 소켓 연결 타임아웃을 설정할 수 있습니다. 이를 통해 어플리케이션에서 네트워크 연결 시간을 관리하고 예외 상황을 처리할 수 있습니다.

추가적인 정보는 Java 11 HttpClient 문서를 참조해주세요.