Time-out voor een Apache HttpClient 5-proxy die blijft hangen tijdens CONNECT
Stel de socket-I/O-time-out van de connection manager in voor het opzetten van de tunnel, naast de aparte TCP-connect-time-out.
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.
| Limiet | Behandelde wachttijd |
|---|---|
| Connect-time-out | Totstandbrenging van de verbinding |
| Socket-time-out | Standaard I/O-inactiviteit, inclusief de CONNECT-uitwisseling |
| Verkrijging uit de pool / toepassingsantwoord | Andere 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.