无法显示使用休息模板的回复正文

问题描述:

请参阅我拥有包含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()); 

     } 

在这里输入反应即时得到在

[email protected] 

形式的响应,但我想显示JSON form.why响应我我越来越喜欢这个..?我如何获得响应身体..?

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

如果检查respone.getBody()的Java类型,你会得到Register,从而println会产生标准的Java toString()输出,你可以看到现在。所以如果你想使用它,请检查字段,但正因为如此,所以你可以像普通的Java对象一样获得结果。

如果出于任何目的,您希望看到JSON(不知道为什么),则可以使用例如“手动”方式将Java对象转换为JSON。杰克逊库...看到here的细节

+0

但你能告诉我为什么即时得到的是响应类型,我应该使用string.class吗? – user3189357 2014-09-23 08:23:06

+0

你这样编程(见'Register.class'参数)。但严重的是,这是rest模板从JSON表示中抽象出你的目的。这来自javadoc:'它处理HTTP连接,让应用程序代码提供URL(带有可能的模板变量)并提取结果.'如果你想获得JSON,你可以直接使用任何HTTP客户端。你能告诉我为什么你想看到JSON?或者你想达到什么目的? – sodik 2014-09-23 08:31:38

+0

@ sodik实际上在响应即时获取userid我想在其他code.thats使用它为什么我想在json form.im中的响应保存该用户ID作为pojo在注册类 – user3189357 2014-09-23 08:49:22

尝试是这样的,如果这是你的USERFIRSTNAME getter方法的名称,你做同样的USERLASTNAME

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