当前位置: 首页 > 知识库问答 >
问题:

没有找到适合的响应类型[类com.avada.rest.UsersController$用户]

庾勇军
2023-03-14

我得到以下异常,不知道为什么。。。

线程“main”组织中出现异常。springframework。网状物客户RestClientException:无法提取响应:在org上找不到响应类型[class com.avada.rest.UsersController$Users]和内容类型[application/json;charset=UTF-8]的合适HttpMessageConverter。springframework。网状物客户HttpMessageConverterExtractor。extractData(HttpMessageConverterExtractor.java:109)位于org。springframework。网状物客户RestTemplate。doExecute(RestTemplate.java:576)位于org。springframework。网状物客户RestTemplate。在org上执行(restemplate.java:529)。springframework。网状物客户RestTemplate。com上的getForObject(restemplate.java:236)。阿瓦达。RestUsersTest。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());
    }
}

如果我注释掉“get all users”的测试代码,我就可以得到一个用户,没有问题。

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

P. S.-我可以通过浏览器调用getUser(),json会恢复正常,所以我知道getUser()正在工作...只是不能让RestTemboard工作

共有1个答案

哈雅珺
2023-03-14

原来是我的用户类中的一个问题(更具体地说是列表中的用户类)

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

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

 类似资料:
  • 我在使用SpringREST模板时遇到以下错误,但我已经为json响应定义了jackson。 当我使用rest客户端查询url时,我也得到了良好的响应。 rest模板配置:

  • 使用Spring,使用以下代码: 我得到 pojo的一个片段:

  • 我试图得到下面给出的带有SpringRest模板的响应实体。我得到了下面的错误, 代码: 我在这篇文章中尝试将媒体类型设置为Application/json。但还是一样的错误。 完整跟踪:

  • 我有以下几点建议: 当我对它执行cucumber测试时,我得到以下异常: 我有一些其他的测试和其他具有相同注释的POJO,它们工作起来没有任何问题。我真的一点也不知道出了什么问题。 感谢任何建议!

  • 问题内容: 使用spring,使用以下代码: 我懂了 pojo的片段: 问题答案: 从Spring的角度来看,没有一个通过注册的实例可以将内容转换为对象。感兴趣的方法是。上述所有回报的实现,包括。 由于没有人可以读取您的HTTP响应,因此处理失败,并出现异常。 如果你能控制服务器响应,修改设置到,或东西匹配。 如果您不控制服务器响应,则需要编写和注册自己的(可以扩展Spring类,see 及其子类

  • org.springframework.web.client.未知内容类型异常:无法提取响应:没有找到适合响应类型[类net.minidev.json.JSONObject]和内容类型[应用程序/json]的HttpMessageConzer endpoint Url还返回JSONObject,因此不知道为什么不匹配