HttpClientの依存関係を4.0.1から4.3.5にアップグレードしようとしています。また、新しいライブラリで接続タイムアウトを設定する際に混乱しました。次のコードの場合:
HttpClient httpClient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 300);
以下のコードに置き換えられます。
RequestConfig config = RequestConfig.custom().setConnectTimeout(300).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
ただし、setConnectTimeoutまたはsetConnectionRequestTimeoutを使用する必要があるかどうかはわかりません。私はHttpClientに精通していません。ソースコードのJava doc)に基づいてsetConnectionTimeoutを使用する必要があるようです。誰か確認してもらえますか?前もって感謝します。
/**
* 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;
}
Apache Http Clientのバージョン4.3では、構成がリファクタリングされました(再び)。次のコードとしての新しい方法:
RequestConfig requestConfig =RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.setSocketTimeout(socketTimeout).build();
接続タイムアウトは、サーバーとの接続が確立されるまでのタイムアウトです。 ConnectionRequestTimeoutは、接続マネージャーに接続を要求するときに使用されます。