Apache HttpClient 4.2: задржите Proxy AuthCache у контексту захтева
Задржите Basic-auth кеш проксија 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. Ако га изградите па употребите преоптерећење које ствара други контекст, кеш остаје изван размене. За касније операције које треба да деле то стање провере идентитета задржите одговарајући контекст уместо да сваки пут изнова градите празан.
Експлицитнo стање PROXY припада овом старијем API-ју. TARGET се тиче провере идентитета одредишта. Нове генерације HttpClient-а промениле су пакете и API-је за проверу идентитета, па ово користите као смерницу за одржавање постојећег кода 4.2, а не као рецепт за нови клијент.
Уобичајена размена вођена изазовом и даље може бити исправна. Засејте Basic проверу идентитета само за познат и намераван прокси и потрошите или ослободите сваки одговор пре него што следећа операција затражи његову везу. Користан резултат је налог и кеширана шема везани за извршавање које заиста шаље захтев.