Tidsgräns för en Apache HttpClient 5-proxy som hänger under CONNECT
Ange anslutningshanterarens socket-I/O-tidsgräns för tunneluppsättningen, tillsammans med den separata TCP-anslutningstidsgränsen.
Proxyn accepterade TCP men slutförde aldrig CONNECT-svaret. Webbplatsens svar har ännu inte börjat; en tidsgräns som bara riktar sig mot det senare svaret kan låta denna uppsättning vänta obegränsat.
För Apache HttpClient 5.3.1 anger du anslutningshanterarens standardvärden:
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();Använd Apache HttpComponents 5-klasserna under org.apache.hc, med Timeout i hjälppaketet core5. Behåll klienten för dess arbete och stäng den. För ett isolerat offentligt HTTP-test levererar en kandidat från HTTP-proxylistan slutpunkten; håll destinationen stabil när du jämför tidsgränser.
| Gräns | Hanterad väntan |
|---|---|
| Anslutningstidsgräns | Upprättande av anslutning |
| Socket-tidsgräns | Standard-I/O-inaktivitet, inklusive CONNECT-utbytet |
| Hämtning från pool / programmets svar | Andra separat konfigurerade faser |
Efter CONNECT kan TLS behöva sin egen uppsättningsgräns via HttpClient 5:s TLS-konfiguration. Skilj också på inaktivitet och en total deadline: avbrutna byte eller upprepade autentiseringsutbyten kan förlänga den totala tiden. Använd programmets stödda deadline- eller avbrottspolicy för en budget för hela operationen.