이론
HttpGetHttpRequestBase와의 상속 관계
HttpGet은 HttpRequestBase를 상속합니다.
HttpRequestBase에 대한 시간 초과 구성
RequestConfig를 통해 구성된 RequestConfig 클래스는 다음과 같은 일반적인 요청 매개변수를 정의합니다:
private final int connectionRequestTimeout;
private final int connectTimeout;
private final int socketTimeout;
특정 양식:
final RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(1000)
.setConnectTimeout(1000)
.setSocketTimeout(1000)
.build();
구성 방법 1: 요청별 구성
HttpRequestBase의 클래스 변수입니다:
private ProtocolVersion version;
private URI uri;
private RequestConfig config;
특정 양식:
final HttpGet httpGet = new HttpGet(GET_URL);
httpGet.setConfig(requestConfig);
구성 모드 2: 타임아웃 구성으로 HttpClient 만들기
HttpClientBuilder의 클래스 변수입니다:
private RequestConfig defaultRequestConfig;
특정 양식:
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build()
구성 모드 1:
public void executeAndSetTimeoutWithRequestConfigPerRequest() throws Exception {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
final RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(1000)
.setConnectTimeout(1000)
.setSocketTimeout(1000)
.build();
final HttpGet httpGet = new HttpGet(GET_URL);
httpGet.setConfig(requestConfig);
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
EntityUtils.consumeQuietly(response.getEntity());
}
}
}
구성 모드 2:
public void executeAndSetTimeoutWithRequestConfig() throws Exception {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(1000)
.setConnectTimeout(1000)
.setSocketTimeout(1000)
.build();
try (CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build()) {
final HttpGet httpGet = new HttpGet(GET_URL);
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
EntityUtils.consumeQuietly(response.getEntity());
}
}
}





