は、あなたはこれにより、次に2つのパラメータを受け入れビルダーにRequestConfigのインスタンスを渡すことができます。
SocketTimeout
- ソケット待機時間(SO_TIMEOUT)をミリ秒で定義します。これは、データの待機のタイムアウト、つまり、連続する2つのデータパケット間の最大休止時間です。
ConnectTimeout
- 接続が確立されるまでのタイムアウトをミリ秒単位で指定します。タイムアウト値0は、無限タイムアウトとして解釈されます。
ConnectionRequestTimeout
- 接続マネージャーから接続を要求するときに使用されるタイムアウトをミリ秒単位で返します。タイムアウト値0は、無限タイムアウトとして解釈されます。
あなたが探しているのはです。SocketTimeoutです。
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECTION_TIMEOUT)
.setConnectionRequestTimeout(CONNECTION_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
httpClient = HttpClientBuilder.create().disableAutomaticRetries().setDefaultRequestConfig(requestConfig)
.setConnectionManager(poolingHttpClientConnectionManager).disableRedirectHandling().build();
ConnectionKeepAliveStrategyをご覧ください。 「2.6接続の維持戦略」のセクションを参照してくださいpage
こんにちは、お返事ありがとうございます。申し訳ありませんが、私は自分自身を十分に明確にしていませんでした。 ソケットタイムアウトを使用してソリューションを試しましたが、接続を停止しません。 基本的には、その接続を通じて一定のデータストリームを受信しますが、ユーザーが指定した時間(10秒など)後に切断できるようにしたいと考えています。 – GreenApples53
@ GreenApples53さて、私は疑問を誤解しました。 ConnectionKeepAliveStratergyが役立つかどうか確認できますか?最初の応答がサーバーから受信された後、キープアライブタイムアウトを使用してこれを処理できます。応答が受信される前に、これを達成するためにソケットタイムアウトを使用することができます。だから私はあなたの両方を混在させる必要があると思います –
私は現在、指定された時間後に単に接続を打ち切るタイマースレッドを生成するソリューションを実装しました。私はこれがベストプラクティスかどうかは分かりませんが、それは私にとってはうまくいくようです。これに何か問題があると思いますか?敬具 – GreenApples53