You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring接收IoT传感器上报JSON提示Required request body is missing如何解决

问题解决方案

这个报错是Spring MVC无法从请求中读取到符合要求的JSON请求体导致的,可按照以下步骤逐一排查解决:


解决步骤

  • 1. 调整接口请求方法配置,或者设置请求体非必填
    你当前接口同时支持GET、POST请求,而GET请求本身没有请求体,只要用GET方式调用接口就会触发该报错,修改方案二选一:
    方案1:仅保留POST请求适配传感器上报场景
    @Controller
    // 类名建议遵守Java大驼峰命名规范
    public class IotController {
      @RequestMapping(value = {"/iot.do"}, method = {RequestMethod.POST})
      public void verifyiot(HttpServletRequest request, @RequestBody IotVO iotvo) throws Exception {
          System.out.println("kkkk >>>" + iotvo.getDatetime());
      }
    }
    
    方案2:如果需要兼容GET请求,设置请求体非必填
    // required设为false后,无请求体时不会直接报错
    public void verifyiot(HttpServletRequest request, @RequestBody(required = false) IotVO iotvo) throws Exception {
      // 业务代码增加空判断即可
      if(iotvo != null){
        System.out.println("kkkk >>>" + iotvo.getDatetime());
      }
    }
    
  • 2. 确认接口访问路径匹配
    你需要核对Spring项目的上下文路径配置:
    • 如果application.properties/application.yml里配置了server.servlet.context-path=/prism,那么正确的访问地址是localhost:8080/prism/iot.do
    • 如果没有配置上下文路径,正确的访问地址是localhost:8080/iot.do,访问带/prism的路径会找不到对应接口
  • 3. 检查传感器上报请求配置
    确认设备上报的请求满足以下要求:
    • 请求方法为POST
    • 请求头Content-Type值为application/json
    • 请求体JSON格式合法,无语法错误
  • 4. 确认IotVO类符合反序列化要求
    IotVO类需要满足Spring JSON消息转换器的解析要求:
    • 存在公共无参构造方法
    • 所有字段名和上报JSON的key完全对应,字段类型匹配(比如deviceid为Long类型、temperature为Float/Double类型等)
    • 所有字段都有对应的getter、setter方法
  • 5. 接口可用性验证
    可以先通过Postman、Apipost等接口测试工具模拟上报请求,确认接口本身可以正常接收数据后,再对接传感器设备,快速区分是服务端配置问题还是设备上报配置问题。

内容的提问来源于stack exchange,提问作者HWAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:30:00