2015-01-02 7 views
6

に私は4.0.1から4.3.5への私たちのHttpClient依存関係をアップグレードしようとしています。新しいlibに接続タイムアウトを設定するのは混乱していました。次のコードの場合:のHttpClient 4.3.5のconnecttimeout対ConnectionRequestTimeOut HttpConnectionParams.setConnectionTimeout 4.0.1

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

しかし、私は慣れていない午前以来、私はsetConnectTimeoutまたはsetConnectionRequestTimeoutを使用するかどうかを確認していない:

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

これは、以下のコードに置き換えられますHttpClientを使用します。それは私にはsetConnectionTimeoutソースコード内のJavaのドキュメントに基づいて使用する必要があります。誰か確認してもらえますか?前もって感謝します。 ApacheのHttpクライアントのバージョン4.3では

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

接続TOと要求は非常に違いがあります。単一のconnのセットアップは、複数の要求によって使用されることがあります。各reqには独自のタイムアウト値があります。接続は、接続を設定するアクションのみを参照します。 –

+0

この[質問]を参照してください(https://stackoverflow.com/questions/37857327/should-i-itill-set-connectionrequesttimeout-on-apache-httpclient-if -i-dont-use)これはConnectionRequestTimeoutの設定に関するものです – Lu55

答えて

9

設定は(再び)リファクタリングました。 次のコードのように新しい方法:サーバーとの接続が確立されるまで

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

接続タイムアウトがタイムアウトです。 ConnectionRequestTimeoutは、接続マネージャーからの接続を要求するときに使用されます。

関連する問題