没有为响应类型找到合适的HttpMessageConverter [类com.avada.rest.UsersController $ Users]

时间:2016-02-05 17:41:58

标签: java spring spring-restcontroller

我收到以下异常并且不确定原因......

  

线程中的异常" main"   org.springframework.web.client.RestClientException:无法解压缩   响应:没有为响应类型找到合适的HttpMessageConverter   [com.avada.rest.UsersController类用户]和内容类型   [application / json; charset = UTF-8] at   org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109)     在   org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:576)     在   org.springframework.web.client.RestTemplate.execute(RestTemplate.java:529)     在   org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:236)     在com.avada.rest.UsersTest.main(UsersTest.java:18)

这是我的RestController:

@RestController
@RequestMapping("/users")
public class UsersController {

    @RequestMapping(method = RequestMethod.GET)
    public Users getUsers() {
        Users users = new Users();
        users.setUsers(ConstantsHome.userprofileMgr.getUsers(null));
        return users;
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public User getUser(@PathVariable String id) {
        return ConstantsHome.userprofileMgr.getUserByUserId(id, true, true);
    }

    public static class Users {
        private List<User> users = new ArrayList<>();

        public List<User> getUsers() {
            return users;
        }

        public void setUsers(List<User> users) {
            this.users = users;
        }
    }
}

这是我的测试类:

public class UsersTest {
    private static RestTemplate template = new RestTemplate();

    public static void main (String[] args) throws Exception {
        // Get all users
        String uri = "http://localhost:8080/IR360/rest/users";
        UsersController.Users users = template.getForObject(uri, UsersController.Users.class);
        System.out.println("Looping through users...");
        for (User user : users.getUsers()) {
            System.out.println("Name=" + user.getName());
        }

        // Get 1 user
        uri = "http://localhost:8080/IR360/rest/users/admin";
        User user = template.getForObject(uri, User.class);
        System.out.println("Name for single user=" + user.getName());
    }
}

如果我注释掉#34;获取所有用户&#34;的测试代码,我可以让单个用户没问题。

我在这段代码中做错了什么?

P.S。 - 我可以通过浏览器拨打getUsers(),json回来了,所以我知道getUsers()正在运行...只是无法让RestTemplate工作< / p>

1 个答案:

答案 0 :(得分:2)

我的Users课程(更具体地说是User中的List<User>课程)是一个问题。

我使用User类更新了我认为可能导致异常的字段@JsonIgnore,并且我能够通过此问题。

因此对于可能遇到此问题的其他人,请检查您尝试执行getForObject的对象,以确保所有内容都能正常映射。