首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自android的REST调用中的类强制转换异常

来自android的REST调用中的类强制转换异常
EN

Stack Overflow用户
提问于 2017-09-26 08:37:02
回答 2查看 2.1K关注 0票数 1

我正在尝试从运行在服务器服务器上的MyApp上的web应用程序172.16.xx.15上获取项目列表,使用resttemplate从我的安卓应用程序中获取条目列表。当我喜欢的时候一切都很好

代码语言:javascript
运行
复制
String url="http://172.16.xx.15:8080/MyApp/GetAllItem";

RestTemplate restTemplate=new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

List<LinkedHashMap> items=restTemplate.getForObject(url, List.class);

当我匿名访问上面的url时,上面的代码可以正常工作。但是我在服务器端使用spring安全性,在访问这个项目列表之前,我需要对用户进行身份验证。因此,我试图获得与身份验证相同的项目列表。我使用以下代码:

代码语言:javascript
运行
复制
String username="test"
String password="test"
HttpAuthentication authHeader=new HttpBasicAuthentication(username, password)  
HttpHeaders requestHeaders=new HttpHeaders();
requestHeaders.setAuthorization(authHeader);
requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON);
 RestTemplate restTemplate=new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
 List<LinkedHashMap> items=(List<LinkedHashMap>)restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<Object>(requestHeaders), List.class);

这段代码也有点工作,但抛出错误和应用程序崩溃。

不能将java.lang.ClassCastException:org.springframework.http.ResponseEntity转换为java.util.List

在这种情况下请帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-26 09:18:37

直接将exchange的响应(即ResponseEntity )转换到集合中。

你需要先收集,因为

代码语言:javascript
运行
复制
ReaponseEntity<List<LinkedHashMap>> response

然后在上面调用

代码语言:javascript
运行
复制
response.getBody()
票数 1
EN

Stack Overflow用户

发布于 2017-09-26 09:19:06

代码语言:javascript
运行
复制
 List<LinkedHashMap> items=(List<LinkedHashMap>)restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<Object>(requestHeaders), List.class);

restTemplate.exchange方法返回一个ResponseEntity<T>对象,因此获得ClassCastException是绝对正常的。您需要将上面的行改写为这样的内容:

代码语言:javascript
运行
复制
ResponseEntity<<LinkedHashMap>> entity = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<Object>(requestHeaders), List.class);
List<LinkedHashMap> items = entity.getBody()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46421564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档