无法显示使用休息模板的回复正文
问题描述:
请参阅我拥有包含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的细节
答
尝试是这样的,如果这是你的USERFIRSTNAME getter方法的名称,你做同样的USERLASTNAME
System.out.println("response"+respone.getBody().getUserFirstName());
但你能告诉我为什么即时得到的是响应类型,我应该使用string.class吗? – user3189357 2014-09-23 08:23:06
你这样编程(见'Register.class'参数)。但严重的是,这是rest模板从JSON表示中抽象出你的目的。这来自javadoc:'它处理HTTP连接,让应用程序代码提供URL(带有可能的模板变量)并提取结果.'如果你想获得JSON,你可以直接使用任何HTTP客户端。你能告诉我为什么你想看到JSON?或者你想达到什么目的? – sodik 2014-09-23 08:31:38
@ sodik实际上在响应即时获取userid我想在其他code.thats使用它为什么我想在json form.im中的响应保存该用户ID作为pojo在注册类 – user3189357 2014-09-23 08:49:22