Proxy přijala TCP, ale nikdy nedokončila odpověď CONNECT. Odpověď webu ještě nezačala; časový limit zaměřený pouze na tuto pozdější odpověď může nechat toto navazování čekat neomezeně.

Pro Apache HttpClient 5.3.1 nastavte výchozí hodnoty správce připojení:

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();

Použijte třídy Apache HttpComponents 5 pod org.apache.hc, s Timeout v pomocném balíčku core5. Klienta zachovejte pro jeho práci a zavřete ho. Pro izolovaný veřejný HTTP test poskytuje koncový bod kandidát ze seznamu HTTP proxy; při porovnávání časových limitů udržujte cíl neměnný.

LimitŘešené čekání
Časový limit připojeníNavázání spojení
Časový limit socketuVýchozí nečinnost I/O včetně výměny CONNECT
Získání z fondu / odpověď aplikaceDalší samostatně konfigurované fáze

Po CONNECT může TLS potřebovat vlastní limit navázání prostřednictvím konfigurace TLS v HttpClient 5. Rozlišujte také nečinnost od celkového termínu: přerušované bajty nebo opakované výměny ověřování mohou prodloužit celkový čas. Použijte podporovanou zásadu termínu nebo zrušení aplikace pro jeden rozpočet na celou operaci.

Související články