CONNECT 中に停止する Apache HttpClient 5 プロキシにタイムアウトを設定する
トンネル確立のためにコネクションマネージャーのソケット I/O タイムアウトを設定し、別個の TCP 接続タイムアウトと併用します。
プロキシは TCP を受け入れましたが、CONNECT 応答を完了しませんでした。Web サイトの応答はまだ始まっておらず、その後の応答だけを対象にしたタイムアウトでは、この確立処理が無期限に待機する可能性があります。
Apache HttpClient 5.3.1 では、コネクションマネージャーのデフォルトを設定します:
var connection = ConnectionConfig.custom()
.setConnectTimeout(Timeout.ofSeconds(5))
.setSocketTimeout(Timeout.ofSeconds(10))
.build();
var manager = PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultConnectionConfig(connection)
.build();
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("http", "proxy.example", 8080))
.build();Apache HttpComponents 5 のクラスを org.apache.hc の下で使用し、Timeout は core5 ユーティリティパッケージにあります。クライアントはその作業のために保持し、最後に閉じます。分離された公開 HTTP テストでは、HTTP プロキシリスト からエンドポイントを取得します。タイムアウトを比較するときは宛先を一定に保ちます。
| 制限 | 対象となる待機 |
|---|---|
| 接続タイムアウト | 接続の確立 |
| ソケットタイムアウト | CONNECT 交換を含むデフォルトの I/O 非アクティビティ |
| プール取得 / アプリケーション応答 | その他、個別に設定される段階 |
CONNECT の後、TLS は HttpClient 5 の TLS 設定を通じて独自のセットアップ制限が必要になる場合があります。また、非アクティビティと全体の期限を区別してください。断続的なバイトや繰り返される認証交換は合計時間を延ばすことがあります。アプリケーションがサポートする期限またはキャンセルのポリシーを使用して、操作全体の予算.