Apache HttpClient 4.2: behold proxy-AuthCache på forespørselskonteksten
Behold en HttpClient 4.2 proxy-Basic-auth-cache på samme utførelseskontekst som påfølgende forespørsler bruker.
I en eldre HttpClient 4.2.2-applikasjon utfører en credential-provider og en autentiseringscache forskjellige oppgaver. Provideren skaffer kontoen; cachen lar et bevisst forhåndskonfigurert autentiseringsskjema delta før en ny utfordring kommer.
For den gamle proxy-spesifikke BasicScheme-konstruktøren ser overføringen slik ut:
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);Dette utsnittet forutsetter at client allerede har den samsvarende proxy-ruten og credential-provideren. proxy er dens HttpHost, og request er den faktiske operasjonen. Cache-nøkkelen må beskrive den mellomleddet, ikke nettstedet for destinasjonen.
Send den fylte konteksten til execute. Å bygge den og deretter bruke en overbelastning som oppretter en annen kontekst, etterlater cachen utenfor utvekslingen. For senere operasjoner som skal dele denne autentiseringstilstanden, behold den aktuelle konteksten i stedet for å bygge en tom på nytt hver gang.
Den eksplisitte PROXY-tilstanden tilhører denne eldre API-en. TARGET gjelder autentisering mot destinasjonen. Nyere HttpClient-generasjoner har endret pakker og autentiserings-API-er, så bruk dette som vedlikeholdsveiledning for eksisterende 4.2-kode og ikke som en oppskrift for en ny klient.
En vanlig utfordringsstyrt utveksling kan fortsatt være riktig. Seed Basic-autentisering bare for en kjent og tiltenkt proxy, og forbruk eller frigjør hvert svar før neste operasjon trenger tilkoblingen. Det nyttige resultatet er en konto og et bufret skjema knyttet til utførelsen som faktisk sender forespørselen.