Проксито прие 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 прокси осигурява крайната точка; дръжте дестинацията постоянна, когато сравнявате таймаути.

ЛимитАдресирано чакане
Таймаут за връзкаУстановяване на връзка
Таймаут за сокетНеактивност на I/O по подразбиране, включително обмена CONNECT
Вземане от пула / отговор на приложениетоДруги отделно конфигурирани етапи

След CONNECT TLS може да се нуждае от собствен лимит за настройка чрез TLS конфигурацията на HttpClient 5. Различавайте също неактивността от общ краен срок: прекъснати байтове или повторни обмени за удостоверяване могат да удължат общото време. Използвайте поддържаната от приложението политика за краен срок или отказ за един бюджет за цялата операция.

Подобни статии