springboot @RequestBody 获取不到content-type="application/json"请求数据

我现在想获取一个content-type=application/json的回调数据,奇怪的是我使用@RequestBody获取不到数据,如下代码所示 :

@Data
public class BaiduDocNofityResponse {
    private String messageId;
    private String messageBody;
    private String notification;
    private String server;

    private String subscriptionName;
    private String version;
    private String signature;
}

@PostMapping("/doc/notify")
public void notify(@RequestBody BaiduDocNofityResponse response){
    log.info("百度上传文档的回调通知:");
    log.info(response.toString());//**这里根本没有打印出数据**

}

但是如果换成下面这段代码就能获取到:

@PostMapping("/doc/notify")
public void notify(HttpServletRequest request) throws IOException {
    log.info("request content-type=" + request.getContentType());
    log.info("百度上传文档的回调通知:" + request.toString());
    InputStream is = request.getInputStream();
    String val = StreamUtil.inputStream2String(is, "UTF-8");
    log.info(val);//**这里能打印出数据**
}

有谁知道是什么原因吗?

阅读 18.3k
2 个回答

解决了,原因既然是log.info(response.toString());//这里的toString()不起作用,如果直接获取如:response.messageBody是获取到的,我真是醉了

不是通过JSON/Body格式传你的,你可以用@ModelAttribute替换@RequestBody,取Form/URL格式传值。而且两种方式对日期等特殊类型的format处理不太一样。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题