CXF RESTful Client - Как сделать простую аутентификацию http без Spring? - PullRequest
5 голосов
/ 24 октября 2011

Я знаком с использованием Jersey для создания серверов и клиентов веб-сервисов RESTful, но из-за проблем с загрузкой классов 1002 * я пытаюсь преобразовать клиент Jersey в CXF. Я считаю, что хочу использовать HTTP-ориентированный клиент, но мы не используем Spring. Нам нужно использовать базовую аутентификацию HTTP. руководство пользователя имеет следующий пример:

WebClient client = WebClient.create("http:books", "username", "password", "classpath:/config/https.xml");

Первый параметр не является строкой URI. Это формат, используемый Spring? Можно ли использовать этот метод только для создания веб-клиентов с использованием Spring?

Другой показанный способ аутентификации - добавить строку заголовка:

String authorizationHeader = "Basic " + org.apache.cxf.common.util.Base64Utility.encode("user:password".getBytes());
webClient.header("Authorization", authorizationHeader);

Я предполагаю, что "user:password" следует заменить действительными значениями, но был бы признателен за подтверждение.

1 Ответ

9 голосов
/ 27 октября 2011

Этот ответ поступил из списка рассылки пользователей CXF.

В первом приведенном выше примере была опечатка.Он был обновлен до:

WebClient client = WebClient.create("http://books", "username", "password", "classpath:/config/https.xml");

Четвертый аргумент может быть нулевым, если конфигурационный файл Spring (и, следовательно, Spring) не используется.

Итак, это сработало для меня:

private WebClient webClient;

public RESTfulClient(String url, String username, String password)
        throws IllegalArgumentException
{
    this.username = username;
    this.password = password;
    this.serviceURL = url;

    if (username == null || password == null || serviceURL == null)
    {
        String msg = "username, password and serviceURL MUST be defined.";
        log.error(msg);
        throw new IllegalArgumentException(msg);
    }

    webClient = WebClient.create(this.serviceURL,
            this.username,
            this.password,
            null); // Spring config file - we don't use this
}
...