java - 来自android的REST调用中的Class Cast Exception

标签 java android

我正在尝试从我的 Android 应用程序使用 resttemplate。 当我喜欢时一切正常

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 security,我需要在访问这个项目列表之前对用户进行身份验证。所以我试图通过身份验证获得相同的项目列表。我正在使用以下代码:

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 cannot be cast to java.util.List

请在这种情况下提供帮助。

最佳答案

您直接将作为 ResponseEntity 的交换响应转换到您的集合中

你需要先收集为

ReaponseEntity<List<LinkedHashMap>> response

然后在上面调用

response.getBody()

关于java - 来自android的REST调用中的Class Cast Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46421564/

相关文章:

java - 哪种设计模式最适合避免方法中的多个参数

java - Maven 忽略了 maven archiver

java - 在java中实现公共(public)API。什么框架?

java - 替换 android 默认的 sqlite build

android - 为什么不总是使用 android :configChanges ="keyboardHidden|orientation"?

java - Android - 为什么当服务收到调用并且应用程序关闭时应用程序崩溃?

java - 从面板切换到 tabbedPane

android - 如何显示来自后台服务的通知?

android - ListView 涵盖了它下面的所有内容

android 计算准确的 gps 距离。之间的距离