Заголовок базовой аутентификации в кодировке Base64 HTTP-клиент Apache

Два связанных вопроса. Я использую API Apache HTTP Client 4.x. myHttpPost - это экземпляр HttpPost, а myHttpClient - это экземпляр HttpClient. Я пытаюсь отправить запрос с использованием базовой аутентификации. Итак, у меня есть HttpClient и я создаю HttpPost.

Метод «грубой силы» для установки заголовка базовой аутентификации состоит в том, чтобы установить его в заголовке HttpPost.

String encoding = Base64Encoder.encode("username" + ":" + "password");
myHttpPost.setHeader("Authorization", "Basic " + encoding);

Приведенный выше пример взят из другого вопроса о переполнении стека (сейчас не могу найти ссылку). Что касается класса Base64Encoder - в каком пакете я его найду или откуда его загрузю?

Главный вопрос - я надеялся выполнить базовую аутентификацию более эстетичным образом, используя приведенный ниже код:

myHttpClient.getCredentialsProvider().setCredentials(
    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthPolicy.BASIC),
    new UsernamePasswordCredentials("username", "password")
);

Но это не работает. Итак, является ли первый приведенный выше пример правильным способом базовой аутентификации с помощью Apache HTTP Client 4.0? Или есть более чистый / простой способ.

5
задан MPelletier 8 December 2011 в 02:29
поделиться