【问题标题】:unable to display response body using rest template无法使用休息模板显示响应正文
【发布时间】:2014-09-23 07:20:50
【问题描述】:

看到我正在注册包含 pojo 的类。

public class Register {
private String userFirstName,userLastName;
//getters and setters for this

}

这是我的服务

public String Register(Register reg) {
String url = "some URL" ;

        String firstname = reg.getUserFirstName();
        String lastname = reg.getUserLastName();
        JSONObject jsondata = new JSONObject();
        jsondata.put("userFirstName", firstname);
        jsondata.put("userLastName", lastname);
HttpEntity<?> requestEntity = new Connection().getConnection(jsondata
                .toString());
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(
                new StringHttpMessageConverter());

        ResponseEntity<Register> respone;
        try {
        respone = restTemplate.exchange(url, HttpMethod.POST, requestEntity,
                Register.class);

         System.out.println("response"+respone.getBody());

        } catch (Exception e) {
            System.out.println("++++++++++++ failed +++++++++++++"+e.getMessage());

        }

在响应中,我以以下形式获得响应

com.somname.model.Register@67636097

但我想以 json 形式显示响应。为什么我会这样..?我怎样才能得到响应正文..?

【问题讨论】:

    标签: json spring rest spring-mvc response


    【解决方案1】:

    我相信一切都会按预期进行。我对 REST 模板不是很熟悉,但我认为它应该可以帮助您“隐藏”REST 内部(例如 JSON 编码/解码)。

    如果您检查respone.getBody() 的Java 类型,您将得到Register,因此println 将生成标准Java toString() 输出,如您现在所见。因此,如果您想使用它,请检查字段,但作为结果,您最好将其作为普通 Java 对象。

    如果出于任何目的您想查看 JSON(不知道为什么),您可以使用例如“手动”将 Java 对象转换为 JSON。杰克逊图书馆...详情请参阅here

    【讨论】:

    • 但是你能告诉我为什么我会得到那种类型的响应,我应该使用 string.class 吗?
    • 你可以这样编程(见Register.class参数)。但说真的,这就是 rest 模板将您从 JSON 表示中抽象出来的目的。这是来自 javadoc:It handles HTTP connections, leaving application code to provide URLs (with possible template variables) and extract results. 如果要获取 JSON,可以直接使用任何 HTTP 客户端。你能告诉我你为什么想看 JSON 吗?或者你想达到什么目标?
    • @sodik ..实际上在响应中我得到了我想在其他代码中使用的用户 ID。这就是为什么我想要 json 形式的响应。我将该用户 ID 保存为注册类中的 pojo
    • 那么您可以直接使用 HTTP 客户端并使用例如解析 JSON Jackson 或为您的“传输对象”建模以反映整个 JSON 响应,然后根据您的意愿将其转换为您的业务对象。
    【解决方案2】:

    如果这是 userFirstName 的 getter 方法的名称,请尝试类似的操作,对 userLastName 执行相同操作

    System.out.println("response"+respone.getBody().getUserFirstName());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-24
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2021-08-17
      • 2016-11-04
      相关资源
      最近更新 更多