【问题标题】:Spring RESTFul Client – RestTemplateSpring RESTFul 客户端 – RestTemplate
【发布时间】:2016-07-17 11:45:49
【问题描述】:

我使用Resttemplate class 来获取all User 对象。但是当我在客户端运行 Main 然后出现错误,请告诉我如何修复它???

线程“main”中的异常 org.springframework.http.converter.HttpMessageNotReadableException: 无法读取 JSON:无法反序列化 edu.java.spring.service.user.model.User out of START_ARRAY token at [资源: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@7d70d1b1; 行:1,列:1];嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:不能 反序列化 edu.java.spring.service.user.model.User 的实例 START_ARRAY 令牌在 [来源: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@7d70d1b1; 行:1,列:1] 在 org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228) 在 org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.read(MappingJackson2HttpMessageConverter.java:220) 在 org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:95) 在 org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:549) 在 org.springframework.web.client.RestTemplate.execute(RestTemplate.java:502) 在 org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:239) 在 edu.java.spring.service.client.RestClientTest.getUsers(RestClientTest.java:57) 在 edu.java.spring.service.client.RestClientTest.main(RestClientTest.java:40) 引起:com.fasterxml.jackson.databind.JsonMappingException: 可以 不反序列化 edu.java.spring.service.user.model.User 的实例 [来源: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@7d70d1b1; 行:1,列:1]

这里文件RestClientTest.java

public class RestClientTest {

    public static void main(String[] args) throws IOException{
        List<User> users = getUsers();
        for (int i = 0; i < users.size(); i++) {
            System.out.println("Rest Response" + loadUser(users.get(i).getUserName()));
        }

    }
    public static List<User> getUsers(){
        String uri = new String("http://localhost:8080/rest/user/list");
        RestTemplate rt = new RestTemplate();
        return (List<User>) rt.getForObject(uri,User.class);
    }

这里文件UserRestServiceController.java

@Controller
public class UserRestServiceController {
    @Autowired
    public  UserDao userDao;
    @RequestMapping(value = "/rest/user/list", produces = MediaType.APPLICATION_JSON_VALUE,method = RequestMethod.GET)
    public @ResponseBody List<User> getUsers(){
        return userDao.listUsers();
    }

【问题讨论】:

  • @duffymo,你没有看到我的项目像你的链接那样完成
  • 这是一个有效的例子。可能会告诉你你做错了什么。
  • 我在http://howtodoinjava.com/spring/spring-restful/spring-restful-client-resttemplate-example/ 学习使用resttemplate但真的不明白我的项目错了
  • 我们看到了。试试别的。

标签: spring resttemplate


【解决方案1】:

我认为其余方法是将List&lt;User&gt; 对象发回给您,但您正尝试在以下代码中使用User.class 解析它:rt.getForObject(uri,User.class);。试试rt.getForObject(uri,List.class);

【讨论】:

  • 我尝试过你的方法,但出现新错误:Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to edu.java.spring.service.user.model.User at edu.java.spring.service.client.RestClientTest.main(RestClientTest.java:33)
猜你喜欢
  • 2016-07-16
  • 1970-01-01
  • 2013-08-20
  • 2016-11-06
  • 2017-09-17
  • 1970-01-01
  • 2012-01-08
  • 2018-12-21
  • 2019-07-06
相关资源
最近更新 更多