Подключение к удаленному URL с доменом, именем пользователя и pw - PullRequest
0 голосов
/ 22 февраля 2019

Эй, ребята, следующая проблема здесь: у меня есть имя пользователя, которое выглядит как «ABCD \ michael», и пароль, который выглядит как «пароль! 6789».«ABCD» в данном случае является доменом.

С помощью следующего кода я получаю 401 несанкционированный в качестве кода ответа.Я подозреваю, что двойные обратные косые черты не преобразуются в одну обратную косую черту до кодирования base64.Или я неправильно использую домен?

Мне нужна помощь, чтобы это заработало.Буду признателен за помощь.

Заранее спасибо!

public int getMeTheResponseCodeOfURL(final URL url) {
    HttpURLConnection httpUrlConnection = null;
    int statusCode = 0;
    String userName = "ABCD\\michael";
    String userPass = "password!6789";
    String UserAndPass = userName + ":" + userPass;
    String userPassBase64 = Base64.getEncoder().encodeToString(UserAndPass.getBytes());

    try {
        httpUrlConnection = (HttpURLConnection) url.openConnection();
        httpUrlConnection.setRequestProperty("Authorization", "Basic " + userPassBase64);
        httpUrlConnection.connect();
        statusCode = httpUrlConnection.getResponseCode();

    } catch (final IOException e) {
        this.log.error("IO Exception! Errormessage: " + e);
    }
    return statusCode;
}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Еще одна попытка - использовать UserAndPass.getBytes("UTF-8"), хотя ваша строка UserAndPass содержит только символы US-ASCII - так что это может не иметь значения - но помните, что String.getBytes() [1] (без аргументов) кодирует строковые байты, используякодировка платформы по умолчанию, которая не всегда может быть тем, что вы хотите.Редко хорошей идеей является зависимость от набора символов по умолчанию.

Кроме того, если «ABCD» является областью аутентификации, то, возможно, нет необходимости быть частью строки UserAndPass - см. RFC 7617 [2]

[1] https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#getBytes()

[2] https://tools.ietf.org/html/rfc7617

0 голосов
/ 22 февраля 2019

Не могли бы вы попытаться заменить знак \ на% 5C. Это код кодирования косой черты.Таким образом, ваше имя пользователя будет выглядеть так:

String userName = "ABCD%5Cmichael"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...