Apache HttpClient 4.2: ponechajte Proxy AuthCache v kontexte požiadavky
Udržiavajte cache Basic autentifikácie proxy HttpClient 4.2 v tom istom kontexte vykonávania, ktorý používajú nasledujúce požiadavky.
V staršej aplikácii s HttpClient 4.2.2 robia poskytovateľ prihlasovacích údajov a cache overovania rôzne úlohy. Poskytovateľ dodáva účet; cache umožňuje zámerne vopred nastavenej schéme overovania zúčastniť sa skôr, než príde ďalšia výzva.
Pri starom konštruktore BasicScheme špecifickom pre proxy vyzerá odovzdanie takto:
AuthCache cache = new BasicAuthCache();
cache.put(proxy, new BasicScheme(ChallengeState.PROXY));
HttpContext context = new BasicHttpContext();
context.setAttribute(ClientContext.AUTH_CACHE, cache);
HttpResponse response = client.execute(request, context);Tento fragment predpokladá, že client už má zodpovedajúcu trasu cez proxy a poskytovateľa prihlasovacích údajov. proxy je jeho HttpHost a request je skutočná operácia. Kľúč cache musí opisovať tohto sprostredkovateľa, nie cieľovú webovú stránku.
Odovzdajte naplnený kontext do execute. Ak ho zostavíte a potom použijete preťaženie, ktoré vytvorí iný kontext, cache zostane mimo výmeny. Pre ďalšie operácie, ktoré majú zdieľať tento stav overovania, si ponechajte príslušný kontext, namiesto toho, aby ste zakaždým vytvárali prázdny.
Explicitný stav PROXY patrí tomuto staršiemu API. TARGET sa týka overovania cieľa. Novšie generácie HttpClient zmenili balíky a API overovania, preto to berte ako pokyn na údržbu existujúceho kódu 4.2, nie ako recept pre nového klienta.
Bežná výmena riadená výzvou môže byť stále správna. Zasejte Basic overovanie len pre známu a zamýšľanú proxy a každú odpoveď spotrebujte alebo uvoľnite skôr, než ďalšia operácia bude potrebovať jej spojenie. Užitočným výsledkom je účet a cachovaná schéma pripojená k vykonávaniu, ktoré požiadavku skutočne odosiela.