Timeout på en Apache HttpClient 5-proxy, der hænger under CONNECT
Angiv forbindelsesadministratorens socket-I/O-timeout til tunnelopsætning sammen med den separate TCP-forbindelsestimeout.
Proxien accepterede TCP, men fuldførte aldrig CONNECT-svaret. Webstedets svar er ikke begyndt endnu; en timeout, der kun er rettet mod det senere svar, kan lade denne opsætning vente ubegrænset.
For Apache HttpClient 5.3.1 angiver du forbindelsesadministratorens standardværdier:
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();Brug Apache HttpComponents 5-klasserne under org.apache.hc, med Timeout i hjælpepakken core5. Behold klienten til dens arbejde, og luk den. Til en isoleret offentlig HTTP-test leverer en kandidat fra HTTP-proxylisten slutpunktet; hold destinationen fast, når du sammenligner timeouts.
| Grænse | Afhjulpet ventetid |
|---|---|
| Forbindelsestimeout | Etablering af forbindelse |
| Socket-timeout | Standard-I/O-inaktivitet, inklusive CONNECT-udvekslingen |
| Hentning fra pulje / applikationssvar | Andre separat konfigurerede faser |
Efter CONNECT kan TLS kræve sin egen opsætningsgrænse via HttpClient 5's TLS-konfiguration. Skeln også mellem inaktivitet og en samlet frist: afbrudte bytes eller gentagne godkendelsesudvekslinger kan forlænge den samlede tid. Brug applikationens understøttede frist- eller annulleringspolitik for ét budget for hele operationen.