Как установить базовую аутентификацию с помощью apache httpClient

Я пытаюсь выполнить запрос PATCH, используя Apache httpclient, и не знаю, как установить базовую аутентификацию. Вот как я сейчас пытаюсь это сделать. Я знаю, что мои параметры аутентификации верны, и я могу пройти аутентификацию с помощью GET... но для GET в настоящее время я использую httpURLConnection, а не Apache httpClient.

С помощью этого кода я получаю ответ 403, и я считаю, что это потому, что я неправильно установил информацию для аутентификации. Я знаю, что мне просто нужно выполнить базовую аутентификацию и передать ее X_AUTH_USER, X_AUTH_CRED.

Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(X_AUTH_USER, X_AUTH_CRED.toCharArray());
        }
    });

    HttpClient client = HttpClientBuilder.create().build();
    HttpPatch patch = new HttpPatch(buildUrl());


    try {
        StringEntity input = new StringEntity(buildJson(jsonList));
        input.setContentType("application/json");
        patch.setEntity(input);

        System.out.println(patch);

        HttpResponse response = client.execute(patch);

        System.out.print(response.getStatusLine());
        for(Header header : response.getAllHeaders()){
            System.out.println(header.getName() + " : " + header.getValue());
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

person Deslyxia    schedule 13.12.2014    source источник
comment
На их странице с примерами есть различные примеры кода для Apache HttpClient.   -  person RealSkeptic    schedule 14.12.2014
comment
добавлен текущий блок кода, который возвращает 403   -  person Deslyxia    schedule 14.12.2014
comment
можете ли вы предоставить больше кода. как вы устанавливаете другие свойства заголовка как Access-Control-Allow-Methods. это может помочь: crunchify.com/   -  person hasan    schedule 14.12.2014


Ответы (1)


Обновление:

Authenticator.setDefault(new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("UserName", "P@sw0rd".toCharArray());
    }
});

Вам также необходимо установить другие свойства заголовка: (пример)

response.addHeader("Access-Control-Allow-Methods", "");
response.setHeader("Access-Control-Allow-Origin", "http://podcastpedia.org");
//allows CORS requests only coming from podcastpedia.org

Код для добавления свойства базовой аутентификации в httpURLConnection

String basic = "Basic " + Base64.encodeToString(("admin:1234").getBytes(), Base64.NO_WRAP);

con.setRequestProperty("Authorization", basic);
person hasan    schedule 13.12.2014
comment
ищете, как это сделать в httpClient, а не в httpURLConnection - person Deslyxia; 14.12.2014
comment
сри только увидел и начал писать :) Обновил. скажи мне, если это работает. - person hasan; 14.12.2014
comment
Я полагаю, что. вы можете установить его один раз при запуске приложения. но это необходимо только перед первым http-запросом. это андроид приложение? - person hasan; 14.12.2014
comment
нет, не андроид... использование java для подключения к интерфейсу отдыха - person Deslyxia; 14.12.2014
comment
поместите его перед инициализацией вашего http-клиента. - person hasan; 14.12.2014
comment
Все еще получаю 403 ... но я вижу это в заголовках ответов ... мне кажется, что мне не нравится, что я делаю патч Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE - person Deslyxia; 14.12.2014
comment
Вы уверены, что реализация с httpURLConnection работает? вы тестировали его для той же службы? - person hasan; 14.12.2014
comment
httpURLConnection работал для GET... но не поддерживает PATCH - person Deslyxia; 14.12.2014
comment
затем, чтобы убедиться, почему вы не используете этот код для аутентификации, который я предоставил для GET. тогда мы можем сказать, куда идти оттуда? - person hasan; 14.12.2014