2015-01-02 15 views
6

Tôi đang cố gắng nâng cấp HttpClient Dependency của chúng tôi từ 4.0.1 lên 4.3.5. Và đã bối rối khi thiết lập thời gian chờ kết nối trong lib mới. Đối với đoạn mã sau:HttpClient 4.3.5 ConnectionRequestTimeOut vs ConnectTimeout cho HttpConnectionParams.setConnectionTimeout trong 4.0.1

HttpClient httpClient = new DefaultHttpClient(); 
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 300); 

Nó sẽ được thay thế bằng mã bên dưới:

RequestConfig config = RequestConfig.custom().setConnectTimeout(300).build(); 
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build(); 

Tuy nhiên, tôi không chắc chắn nếu tôi nên sử dụng setConnectTimeout hoặc setConnectionRequestTimeout vì tôi không quen thuộc với HttpClient. Dường như với tôi tôi nên sử dụng setConnectionTimeout dựa trên tài liệu java trong mã nguồn. Ai đó có thể vui lòng xác nhận? Cảm ơn trước.

https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.3.3/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java

/** 
* Returns the timeout in milliseconds used when requesting a connection 
* from the connection manager. A timeout value of zero is interpreted 
* as an infinite timeout. 
* <p/> 
* A timeout value of zero is interpreted as an infinite timeout. 
* A negative value is interpreted as undefined (system default). 
* <p/> 
* Default: <code>-1</code> 
*/ 
public int getConnectionRequestTimeout() { 
    return connectionRequestTimeout; 
} 

/** 
* Determines the timeout in milliseconds until a connection is established. 
* A timeout value of zero is interpreted as an infinite timeout. 
* <p/> 
* A timeout value of zero is interpreted as an infinite timeout. 
* A negative value is interpreted as undefined (system default). 
* <p/> 
* Default: <code>-1</code> 
*/ 
public int getConnectTimeout() { 
    return connectTimeout; 
} 
+0

kết nối ĐẾN và yêu cầu TO là những điều rất khác. conn duy nhất thiết lập có thể được sử dụng bởi nhiều yêu cầu. mỗi req có giá trị thời gian chờ của riêng nó. Kết nối TO chỉ có thể tham chiếu đến hành động thiết lập kết nối –

+0

Xem [câu hỏi này] (https://stackoverflow.com/questions/37857327/should-i-still-set-connectionrequesttimeout-on-apache-httpclient-if -i-dont-use) về cài đặt ConnectionRequestTimeout – Lu55

Trả lời

9

Trong phiên bản 4.3 của Apache HTTP client cấu hình được refactored (một lần nữa). cách mới theo mã sau:

RequestConfig requestConfig =RequestConfig.custom() 
.setConnectTimeout(connectTimeout) 
.setConnectionRequestTimeout(connectionRequestTimeout) 
.setSocketTimeout(socketTimeout).build(); 

Hết giờ kết nối là hết thời gian chờ cho đến khi kết nối với máy chủ được thiết lập. ConnectionRequestTimeout được sử dụng khi yêu cầu kết nối từ trình quản lý kết nối.

Các vấn đề liên quan