Spring RestTemplate getForObject () дает 401 несанкционированное исключение

Spring RestTemplate getForObject () дает 401 несанкционированное исключение

03.11.2013 03:59:15 Просмотров 40 Источник

В моем браузере follwing rest API url работает, и я могу видеть результаты XML.

"http://V7846EKZZJ1OJAW486D66IS7GO24XKUZ@localhost:8090/prestashop/api/products/1"

Я хочу вызвать этот url-адрес из Java-клиента и получить результаты. Для этого я использую RestTemplate.

String result = restTemplate.getForObject("http://V7846EKZZJ1OJAW486D66IS7GO24XKUZ@localhost:8090/prestashop/api/products/1"
    , String.class);

это дает следующую ошибку,

WARNING: GET request for       http://V7846EKZZJ1OJAW486D66IS7GO24XKUZ@localhost:8090/prestashop/api/products/1 resulted in 401 (Unauthorized); invoking error handler
Disconnected from the target VM, address: '127.0.0.1:49533', transport: 'socket'

org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:537)

Не знаю, почему это происходит. Не можем мы назвать адрес в форму имя пользователя@хост/устройства с RestTemplate? Или это неправильно, как я называю этот URL-адрес с RestTemplate?

с уважением, -Ласит.

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/19752691/spring-resttemplate-getforobject-giving-401-unauthorized-exception#comment29352773_19752691
Что происходит, когда вы используете этот URL-адрес из браузера? Похоже, ему тоже нужен пароль или какая-то другая форма аутентификации?
https://stackoverflow.com/questions/19752691/spring-resttemplate-getforobject-giving-401-unauthorized-exception#comment29352923_19752691
Нет, это не нужно пароль. С браузером он дает информацию о продукте, которая находится в формате XML.
https://stackoverflow.com/questions/19752691/spring-resttemplate-getforobject-giving-401-unauthorized-exception#comment29590996_19752691
Привет, я решил эту проблему. Кажется, имя пользователя@host / application не распознается с помощью шаблона Spring test. Поэтому нам нужно установить авторизацию вручную. С помощью HttpClient DefaultHttpClient = новый DefaultHttpClient(); BasicCredentialsProvider credentialsProvider = новый BasicCredentialsProvider(); credentialsProvider.setCredentials (AuthScope.Любой, новый UsernamePasswordCredentials(пользователь, пароль)); с помощью HttpClient.setCredentialsProvider(credentialsProvider);

Ответы - Spring RestTemplate getForObject () дает 401 несанкционированное исключение / Spring RestTemplate getForObject() giving 401 unauthorized exception

Rama

04.11.2014 04:04:58

Я столкнулся с подобной проблемой и решил ее с помощью resttemplate.метод обмена. Шаги положите ваши идентификационные данные в RestRequestHeaderInfo, которая должна быть внутри HttpEntity<MultiValueMap<String, String>> передать эту сущность в обмен метод, как показано ниже:

response = restTemplate.exchange(url, HttpMethod.GET, request, Response.class);

Если ответ находится в формате json, как в моем случае, ответ является классом держателя для соответствующих данных, которые будут заполнены библиотекой Джексона в моем пути к классу: это сработало.

Закрыть X