Unsupported Media Type","message":"Content type 'application/octet-stream' not supported",

6 篇文章 0 订阅
3 篇文章 0 订阅
在使用SpringBoot处理设备上传的数据时,遇到了'application/octet-stream'不支持的错误。原因是使用了JSONObject来接收RequestBody中的原始二进制流数据。通过将参数类型改为String并使用JSON解析库解析,成功解决了这一问题。
摘要由CSDN通过智能技术生成

'application/octet-stream' not supported

这段时间在接入某家病虫害检测设备,服务端采用Spring Boot。有这么一个需求,这台设备上传一个数据到服务端,服务端对数据进行处理,但是和厂家沟通的时候,厂家说数据放在RequestBody(请求体)里,于是我就理所当然的用了下面的这种处理方式:

  
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public ServerResponse upload(@RequestBody JSONObject param) {
    	logger.info("param: {}", param);
        //这里是业务逻辑
    }

但是在上报数据时候出现了异常:前端报的异常是这个

{"timestamp":"2019-07-03T02:41:42.062+0000","status":415,"error":"Unsupported Media Type","message":"Content type 'application/octet-stream' not supported","path":"/upload"}

后台报的异常是这个:

2019-07-03 10:41:42.045  WARN 17506 --- [http-nio-801-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported]

一看到这个报错我是真懵逼,第一次见,二话不说,直接百度。很赞的是,找到的第一篇博客就是正确的处理方案,源地址在这里
博客里面说的很清楚,出现这个报错的原因是我用JSONObject接受了RequestBody里的内容,但是RequestBody里的数据是原始的二进制流方式,所以出现了这个错误。
具体的解决方式是把参数类型改为String,这样就解决了。代码如下

	@RequestMapping(value = "/upload", method = RequestMethod.POST)
    public ServerResponse upload(@RequestBody String param) {
        JSONObject object = JSONObject.parseObject(param);
   		//这里是业务逻辑
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值