@ResponseBody的返回
场景:调用渠道打款。收到回调后,返回success为成功。
问题:直接使用@ResponseBody在controller上返回String类型,但是当得到数据的时候出现坑点。返回值为:“success”。[是带双引号,导致验收失败]。
// 代码如下
@ResponseBody
@RequestMapping(value = "/index",method = RequestMethod.POST)
public String getData(){
return "success";
}
// postmen返回
"success"
结论:当@ResponseBody返回时,会自动给返回值json化。当为对象时返回 {“name” : “val”, “name2” : “val2”} 。但是当返回值为string类型时会被解析成为“xxx”。
解决方案:使用HttpServletResponse返回输出到流中。
public ModelAndView callBack(HttpServletResponse response){
String succ = "success";
PrintWriter pw =null;
try {
pw = response.getWriter();
pw.write(succ);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
finally {
pw.close();
}
return null;
}
// postmen返回
success