Вот команда curl, которую я пытаюсь реплицировать:Ошибка аутентификации HttpUrlConnection
Ниже приведен запрос на завивание.
curl user:[email protected]:8080/foo/bar -d property_one=value_one -d property_two=value_two -d property_three=value_three
А вот код для HttpURLConnection
URL thisurl = new URL ("http://localhost:8080/foo");
String encoding = Base64Encoder.base64Encode("user:password");
HttpURLConnection connection = (HttpURLConnection) thisurl.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.addRequestProperty("property_one", "value_one");
connection.addRequestProperty("property_two", "value_two");
connection.addRequestProperty("property_three", "property_three");
connection.setRequestProperty ("Authorization", "Basic " + encoding);
InputStream content = (InputStream)connection.getInputStream();
На линии connection.getInputStream() я получаю 401 ошибку. Я неправильно делаю проверку подлинности?
Не знаю, имеет ли это значение, но ваш URL-адрес отличается. – Henry
Пробовал ли вы без 'connection.setDoOutput (true);'? Запрос на получение не позволяет выводить. – Henry
1) Запрос cURL является запросом 'POST'. Любой запрос с '-d' будет сделан неявно' POST'. 2) Данные должны быть отправлены в тело запроса как параметры, закодированные в URL-адресе, а не в свойстве запроса. 3) Заголовок 'Content-Type' неявно устанавливается в запросе cURL на' application/x-www-form-urlencoded'. Вы должны сделать то же самое в коде Java. –