1
在我的瀏覽器中,其餘的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)
不知道爲什麼發生這種情況。 我們不能用表單username @ host/appplication和RestTemplate調用URL嗎? 或者我用RestTemplate調用這個URL的方式不正確?
關於, -Lasith。
當您從瀏覽器使用該URL時會發生什麼?它看起來也需要密碼,或者其他形式的身份驗證? – MattR
不,它不需要密碼。通過瀏覽器,它提供了XML格式的產品信息。 – lsc
嗨,我解決了這個問題。看來用戶@主機/應用程序無法識別Spring測試模板。所以我們需要手動設置授權。 DefaultHttpClient httpClient = new DefaultHttpClient(); BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(user,password)); httpClient.setCredentialsProvider(credentialsProvider); – lsc