我收到以下异常,不确定为什么...
线程“主”中的异常
org.springframework.web.client.RestClientException:无法提取
响应:找不到适合响应类型的HttpMessageConverter
[class com.avada.rest.UsersController $ Users]和内容类型
[application / json; charset = UTF-8]位于
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());
}
}
如果注释掉“获取所有用户”的测试代码,我可以毫无问题地获得一个用户。
我在这段代码中做错了什么?
附言-我可以通过浏览器调用
getUsers()
,并且json返回正常,所以我知道getUsers()
在工作...只是无法使RestTemplate
工作 最佳答案
原来是我的Users
类(更具体地说是User
中的List<User>
类)中的一个问题。
我在可能认为导致异常的字段上用User
更新了@JsonIgnore
类,并且能够解决此问题。
因此,对于可能遇到此问题的其他人,请检查要尝试对其执行getForObject
的对象,以确保所有内容都可以正确映射。
关于java - 找不到适合响应类型[类com.avada.rest.UsersController $ Users]的HttpMessageConverter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35230297/