De proxy accepteerde TCP maar maakte het CONNECT-antwoord nooit af. Het antwoord van de website is nog niet begonnen; een time-out die alleen op dat latere antwoord is gericht, kan deze opzet onbeperkt laten wachten.

Voor Apache HttpClient 5.3.1 stelt u de standaardwaarden van de connection manager in:

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

Gebruik de Apache HttpComponents 5-klassen onder org.apache.hc, met Timeout in het hulppakket core5. Houd de client aan voor zijn werk en sluit hem. Voor een geïsoleerde openbare HTTP-test levert een kandidaat uit de HTTP-proxylijst het eindpunt; houd de bestemming stabiel bij het vergelijken van time-outs.

LimietBehandelde wachttijd
Connect-time-outTotstandbrenging van de verbinding
Socket-time-outStandaard I/O-inactiviteit, inclusief de CONNECT-uitwisseling
Verkrijging uit de pool / toepassingsantwoordAndere apart geconfigureerde fasen

Na CONNECT kan TLS zijn eigen opzetlimiet nodig hebben via de TLS-configuratie van HttpClient 5. Onderscheid ook inactiviteit van een totale deadline: onderbroken bytes of herhaalde verificatie-uitwisselingen kunnen de totale tijd verlengen. Gebruik het door de toepassing ondersteunde deadline- of annuleringsbeleid voor één budget voor de hele bewerking.

Gerelateerde artikelen