تعیین مهلت برای پروکسی Apache HttpClient 5 که هنگام CONNECT متوقف میشود
مهلت ورودی/خروجی سوکت مدیر اتصال را برای برپایی تونل، در کنار مهلت جداگانه اتصال TCP تنظیم کنید.
پروکسی TCP را پذیرفت اما هرگز پاسخ CONNECT را کامل نکرد. پاسخ وبسایت هنوز آغاز نشده است؛ مهلتی که فقط آن پاسخ بعدی را هدف بگیرد میتواند این برپایی را نامحدود منتظر بگذارد.
برای 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 |
| دریافت از استخر / پاسخ برنامه | مراحل دیگر که جداگانه پیکربندی میشوند |
پس از CONNECT، TLS ممکن است از طریق پیکربندی TLS در HttpClient 5 به محدودیت برپایی خود نیاز داشته باشد. همچنین بیفعالیتی را از یک مهلت کلی جدا کنید: بایتهای متناوب یا تبادلهای مکرر احراز هویت میتوانند زمان کل را طولانی کنند. از سیاست مهلت یا لغو پشتیبانیشده برنامه برای یک بودجه برای کل عملیات.