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ímiteEspera cuberta
Tempo de espera de conexiónEstablecemento da conexión
Tempo de espera de socketInactividade de I/O predeterminada, incluído o intercambio CONNECT
Obtención do grupo / resposta da aplicaciónOutras 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.

Artigos relacionados