Il proxy ha accettato TCP ma non ha mai completato la risposta CONNECT. La risposta del sito non è ancora iniziata; un timeout rivolto solo a quella risposta successiva può lasciare questa configurazione in attesa senza limiti.

Per Apache HttpClient 5.3.1, imposta i valori predefiniti del gestore connessioni:

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();

Usa le classi di Apache HttpComponents 5 sotto org.apache.hc, con Timeout nel pacchetto di utilità core5. Conserva il client per il suo lavoro e chiudilo. Per un test HTTP pubblico isolato, un candidato dalla lista di proxy HTTP fornisce l'endpoint; mantieni stabile la destinazione quando confronti i timeout.

LimiteAttesa coperta
Timeout di connessioneInstaurazione della connessione
Timeout del socketInattività I/O predefinita, incluso lo scambio CONNECT
Acquisizione dal pool / risposta dell'applicazioneAltre fasi configurate separatamente

Dopo CONNECT, TLS può richiedere un proprio limite di instaurazione tramite la configurazione TLS di HttpClient 5. Distingui anche l'inattività da una scadenza complessiva: byte intermittenti o scambi di autenticazione ripetuti possono allungare il tempo totale. Usa la politica di scadenza o annullamento supportata dall'applicazione per un budget per l'intera operazione.

Articoli correlati