내 브라우저에서 나머지 API url이 작동 중이며 XML 결과를 볼 수 있습니다.Spring RestTemplate getForObject() 401 무단 예외 제공
"http://[email protected]:8090/prestashop/api/products/1"
Java 클라이언트에서이 URL을 호출하여 결과를 얻고 싶습니다. 그 때문에 RestTemplate을 사용하고 있습니다.
String result = restTemplate.getForObject("http://[email protected]:8090/prestashop/api/products/1"
, String.class);
이 다음과 같은 오류를주고,
WARNING: GET request for http://[email protected]: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을 사용하여 username @ host/appplication 형식의 URL을 호출 할 수 없습니까? RestTemplate에서이 URL을 호출하는 방식이 잘못 되었습니까?
안부, -Lasith.
브라우저에서 해당 URL을 사용하면 어떻게됩니까? 그것도 비밀 번호 또는 인증의 다른 형태로 필요한 것 같습니다? – MattR
아니요, 비밀번호가 필요 없습니다. 브라우저를 통해 XML 형식의 제품 정보를 제공합니다. – lsc
안녕하세요, 저는이 문제를 해결했습니다. username @ host/application이 Spring 테스트 템플릿으로 인식되지 않는 것 같습니다. 따라서 수동으로 권한을 설정해야합니다. DefaultHttpClient httpClient = new DefaultHttpClient(); BasicCredentialsProvider 자격 공급자 = 새 BasicCredentialsProvider(); credentialsProvider.setCredentials (AuthScope.ANY, 새 UsernamePasswordCredentials (user, password)); httpClient.setCredentialsProvider (credentialsProvider); – lsc