Apache HttpClient 4.2: konservu la prokuran AuthCache en la petokunteksto
Konservu la prokuran Basic-auth-kaŝmemoron de HttpClient 4.2 en la sama plenumkunteksto uzata de postaj petoj.
En malnova aplikaĵo HttpClient 4.2.2, identigila provizanto kaj aŭtentiga kaŝmemoro faras malsamajn taskojn. La provizanto liveras la konton; la kaŝmemoro ebligas, ke intence antaŭagordita aŭtentiga skemo partoprenu antaŭ ol alia defio alvenas.
Por la malnova prokuro-specifa konstruilo BasicScheme, la transdono aspektas tiel:
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);Ĉi tiu fragmento supozas, ke client jam havas la kongruan prokuran itineron kaj identigilan provizanton. proxy estas ĝia HttpHost, kaj request estas la fakta operacio. La kaŝmemora ŝlosilo devas priskribi tiun peranton, ne la celan retejon.
Transdonu la plenigitan kuntekston al execute. Konstrui ĝin kaj poste uzi superŝarĝon, kiu kreas alian kuntekston, lasas la kaŝmemoron ekster la interŝanĝo. Por postaj operacioj, kiuj devas kunhavigi tiun aŭtentigan staton, konservu la taŭgan kuntekston anstataŭ rekonstrui malplenan ĉiufoje.
La eksplicita stato PROXY apartenas al ĉi tiu pli malnova API. TARGET temas pri aŭtentigo de la celo. Pli novaj generacioj de HttpClient ŝanĝis pakaĵojn kaj aŭtentigajn API-ojn, do uzu ĉi tion kiel prizorgan gvidon por ekzistanta kodo 4.2, ne kiel recepton por nova kliento.
Normala defio-gvidata interŝanĝo ankoraŭ povas esti ĝusta. Semplu Basic-aŭtentigon nur por konata celata prokuro, kaj konsumu aŭ liberigu ĉiun respondon antaŭ ol la sekva operacio bezonos ĝian konekton. La utila rezulto estas konto kaj kaŝmemorita skemo ligitaj al la plenumo, kiu efektive sendas la peton.