Időtúllépés a CONNECT közben elakadó Apache HttpClient 5 proxyhoz
Állítsa be a kapcsolatkezelő socket I/O időtúllépését az alagút létrehozásához, a külön TCP-csatlakozási időtúllépés mellett.
A proxy elfogadta a TCP-t, de soha nem fejezte be a CONNECT választ. A webhely válasza még nem kezdődött el; a csak arra a későbbi válaszra irányuló időtúllépés korlátlanul várakoztathatja ezt a létrehozást.
Az Apache HttpClient 5.3.1 esetében állítsa be a kapcsolatkezelő alapértelmezéseit:
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();Használja az Apache HttpComponents 5 osztályait a org.apache.hc alatt, a Timeout pedig a core5 segédcsomagban található. Tartsa meg a klienst a munkájához, és zárja be. Elkülönített nyilvános HTTP-teszthez a HTTP proxy lista egyik jelöltje biztosítja a végpontot; az időtúllépések összehasonlításakor tartsa állandóan a célt.
| Korlát | Kezelt várakozás |
|---|---|
| Csatlakozási időtúllépés | Kapcsolat létrehozása |
| Socket időtúllépés | Alapértelmezett I/O inaktivitás, beleértve a CONNECT cserét |
| Készletből szerzés / alkalmazásválasz | Más, külön beállított szakaszok |
A CONNECT után a TLS-nek saját létrehozási korlátra lehet szüksége a HttpClient 5 TLS-konfigurációján keresztül. Különböztesse meg az inaktivitást a teljes határidőtől: a szakaszos bájtok vagy az ismétlődő hitelesítési cserék meghosszabbíthatják a teljes időt. Használja az alkalmazás által támogatott határidő- vagy megszakítási szabályzatot egyetlen költségvetés a teljes műveletre.