web-dev-qa-db-ja.com

HttpComponentクライアントのデフォルトのタイムアウト

Httpclient 4.1のデフォルトのhttpParamsに関するドキュメントが見つかりません。

GETを実行するときのデフォルトのソケットタイムアウトは何ですか?

15
thinkanotherone

documentation によると、http.socket.timeoutパラメータはSO_TIMEOUT値を制御します。

このパラメーターが設定されていない場合、読み取り操作はタイムアウトになりません(無限タイムアウト)。

19
beny23

受け入れられた回答は、HttpClientの新しいバージョンには適用されません。バージョン4.3.X以上では、通常60秒のシステムデフォルトが使用されます。

HttpClient javadocから取得。

public int getSocketTimeout()
Defines the socket timeout (SO_TIMEOUT) in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets).
A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default).

Default: -1
13
Chandru

Apache HttpClientバージョン4.x以降の場合

int timeout = 5*60; // seconds (5 minutes)
RequestConfig config = RequestConfig.custom()
      .setConnectTimeout(timeout * 1000)
      .setConnectionRequestTimeout(timeout * 1000)
      .setSocketTimeout(timeout * 1000).build();
HttpClient httpClient = 
   HttpClientBuilder.create().setDefaultRequestConfig(config).build();
3
Mike Murphy

https://hc.Apache.org/httpcomponents-client-ga/httpclient/apidocs/org/Apache/http/client/config/RequestConfig.html#getSocketTimeout%28%29

ゼロのタイムアウト値は、無限のタイムアウトとして解釈されます。負の値は未定義として解釈されます(システムデフォルト)。

デフォルト:-1

0
yqbjtu