Časovna omejitev za proxy Apache HttpClient 5, ki se zatakne med CONNECT
Nastavite socket I/O časovno omejitev upravitelja povezav za vzpostavitev tunela skupaj z ločeno časovno omejitvijo povezave TCP.
Proxy je sprejel TCP, vendar nikoli ni dokončal odgovora CONNECT. Odgovor spletnega mesta se še ni začel; časovna omejitev, usmerjena le na ta poznejši odgovor, lahko pusti to vzpostavitev v neskončnem čakanju.
Za Apache HttpClient 5.3.1 nastavite privzete vrednosti upravitelja povezav:
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();Uporabite razrede Apache HttpComponents 5 pod org.apache.hc, s Timeout v pomožnem paketu core5. Ohranite odjemalca za njegovo delo in ga zaprite. Za izoliran javni test HTTP kandidat s seznama proxyjev HTTP zagotavlja končno točko; pri primerjavi časovnih omejitev ohranite cilj nespremenjen.
| Omejitev | Obravnavano čakanje |
|---|---|
| Časovna omejitev povezave | Vzpostavitev povezave |
| Časovna omejitev vtičnice | Privzeta neaktivnost I/O, vključno z izmenjavo CONNECT |
| Pridobitev iz zbirke / odgovor aplikacije | Druge ločeno konfigurirane faze |
Po CONNECT lahko TLS potrebuje svojo omejitev vzpostavitve prek konfiguracije TLS v HttpClient 5. Razlikujte tudi neaktivnost od skupnega roka: prekinjeni bajti ali ponavljajoče se izmenjave preverjanja lahko podaljšajo skupni čas. Uporabite podprto politiko roka ali preklica aplikacije za en proračun za celotno operacijo.