Apache HttpClient 4.2: запазете Proxy AuthCache в контекста на заявката
Запазете кеша за Basic удостоверяване на прокси в HttpClient 4.2 в същия контекст на изпълнение, който използват следващите заявки.
В наследено приложение с HttpClient 4.2.2 доставчикът на идентификационни данни и кешът за удостоверяване вършат различни задачи. Доставчикът подава профила; кешът позволява на умишлено предварително настроена схема за удостоверяване да участва, преди да пристигне следващо предизвикателство.
За стария конструктор на BasicScheme, специфичен за прокси, предаването изглежда така:
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);Този фрагмент предполага, че client вече има съответния маршрут през прокси и доставчик на идентификационни данни. proxy е неговият HttpHost, а request е действителната операция. Ключът на кеша трябва да описва този посредник, а не целевия сайт.
Подайте попълнения контекст на execute. Ако го изградите и после използвате претоварване, което създава друг контекст, кешът остава извън обмена. За следващи операции, които трябва да споделят това състояние на удостоверяване, запазете подходящия контекст, вместо да пресъздавате празен всеки път.
Явното състояние PROXY принадлежи на този по-стар API. TARGET се отнася до удостоверяване на дестинацията. По-новите поколения HttpClient промениха пакетите и API за удостоверяване, затова използвайте това като указание за поддръжка на съществуващ код 4.2, а не като рецепта за нов клиент.
Обикновеният обмен, управляван от предизвикателство, може да остане правилен. Заредете Basic удостоверяване само за известно и желано прокси и изчерпете или освободете всеки отговор, преди следващата операция да се нуждае от връзката му. Полезният резултат е профил и кеширана схема, свързани с изпълнението, което действително изпраща заявката.