Tempo de espera para un proxy Apache HttpClient 5 que se bloquea durante CONNECT
Configure o tempo de espera de socket I/O do xestor de conexións para o establecemento do túnel, xunto co tempo de espera de conexión TCP independente.
O proxy aceptou TCP pero nunca rematou a resposta CONNECT. A resposta do sitio web aínda non comezou; un tempo de espera dirixido só a esa resposta posterior pode deixar este establecemento esperando sen límite.
Para Apache HttpClient 5.3.1, configure os valores predeterminados do xestor de conexións:
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();Use as clases de Apache HttpComponents 5 baixo org.apache.hc, con Timeout no paquete de utilidades core5. Conserve o cliente para o seu traballo e pécheo. Para unha proba HTTP pública illada, un candidato da lista de proxies HTTP proporciona o punto final; manteña o destino estable ao comparar tempos de espera.
| Límite | Espera cuberta |
|---|---|
| Tempo de espera de conexión | Establecemento da conexión |
| Tempo de espera de socket | Inactividade de I/O predeterminada, incluído o intercambio CONNECT |
| Obtención do grupo / resposta da aplicación | Outras etapas configuradas por separado |
Despois de CONNECT, TLS pode necesitar o seu propio límite de establecemento mediante a configuración TLS de HttpClient 5. Distinga tamén a inactividade dunha data límite total: os bytes intermitentes ou os intercambios de autenticación repetidos poden ampliar o tempo total. Use a política de data límite ou cancelación compatible coa aplicación para un orzamento para toda a operación.