在我的浏览器中,其余的REST API URL正常工作,我可以看到XML结果.
"http://V7846EKZZJ1OJAW486D66IS7GO24XKUZ@localhost:8090/prestashop/api/products/1"
我想从Java客户端调用此URL并获取结果.为此,我正在使用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调用username @ host / appplication形式的URL吗?
还是我使用RestTemplate调用此URL的方式不正确?
问候,
-Lasith.
解决方法:
我遇到了类似的问题,并使用resttemplate.exchange方法解决了它.这些步骤会将您的身份验证详细信息放入RestRequestHeaderInfo中,该信息应位于HttpEntity< MultiValueMap< String,String>>中.将此实体传递到如下的交换方法中:
response = restTemplate.exchange(url, HttpMethod.GET, request, Response.class);
如果响应是像我这样的json格式,则响应是对应数据的持有者类,该类将由我的类路径中的Jackson库填充:可以.