Vremensko ograničenje za Apache HttpClient 5 proxy koji se zaglavi tokom CONNECT
Postavite socket I/O vremensko ograničenje upravitelja veza za uspostavljanje tunela, uz odvojeno TCP ograničenje povezivanja.
Proxy je prihvatio TCP, ali nikada nije dovršio CONNECT odgovor. Odgovor web stranice još nije počeo; vremensko ograničenje usmjereno samo na taj kasniji odgovor može ostaviti ovo postavljanje da čeka neograničeno.
Za Apache HttpClient 5.3.1 postavite zadane vrijednosti upravitelja veza:
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();Koristite klase Apache HttpComponents 5 pod org.apache.hc, uz Timeout u pomoćnom paketu core5. Zadržite klijenta za njegov posao i zatvorite ga. Za izolirani javni HTTP test, kandidat iz liste HTTP proxyja pruža krajnju tačku; držite odredište stalnim kada upoređujete ograničenja.
| Ograničenje | Adresirano čekanje |
|---|---|
| Ograničenje povezivanja | Uspostavljanje veze |
| Socket ograničenje | Zadana I/O neaktivnost, uključujući CONNECT razmjenu |
| Preuzimanje iz pula / odgovor aplikacije | Druge odvojeno konfigurirane faze |
Nakon CONNECT, TLS može trebati vlastito ograničenje postavljanja kroz TLS konfiguraciju HttpClient 5. Također razlikujte neaktivnost od ukupnog roka: isprekidani bajtovi ili ponovljene razmjene provjere mogu produžiti ukupno vrijeme. Koristite podržanu politiku roka ili otkazivanja aplikacije za jedan budžet za cijelu operaciju.