Как использовать базовую аутентификацию в многопоточной среде HTTPClient? - PullRequest
5 голосов
/ 27 февраля 2012

Я пытаюсь использовать HTTPClient для отправки большого количества запросов в веб-сервис, который защищен с помощью обычной аутентификации. Хотя я использую ThreadSafeClientConnManager, реализации базовой аутентификации Apache HTTPClient, похоже, не являются поточно-ориентированными. Иногда запрашивающий заголовок не содержит элемент авторизации, который вызывает 401. Существует ли распространенный способ или лучшая практика использования обычной проверки подлинности с несколькими потоками?

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Я недавно столкнулся с той же проблемой. Есть эта зарегистрированная проблема: https://issues.apache.org/jira/browse/HTTPCLIENT-1168 Кажется, у вас есть два варианта:

  1. Создать HttpContext для каждого потока или запроса
  2. Используйте SyncBasicHttpContext, который является поточно-безопасной реализацией
1 голос
/ 06 марта 2012

Вы уверены, что это проблема безопасности потока?Если вы используете java.net.Authenticator, он кэширует имена / пароли, если вы не сделаете это:

AuthCacheValue.setAuthCache(new AuthCacheImpl());

AuthCacheValue и AuthCacheImpl взяты из sun.net.www.protocol.http.Я делаю это в конструкторе класса, который расширяет Authenticator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...