Spring MVC post 请求415错误

错误描述:

最近有个项目需要重写,web后台从c++改成java,有个接口是post请求的,我就自然用的是json格式的解析参数,但是调试的时候一直是没有任何日志,连方法都没有进,只有在测试时返回的415错误。

http 415错误:

HTTP请求415错误 – 不支持的媒体类型(Unsupported media type)
通常有以下情况:
1:检查你的 http 请求头信息,比如 因为 User-Agent 被服务器设置 拒绝请求了;
    比如你写的的爬虫,就很有可能因为没有伪装成浏览器,被拒绝请求
    user-agent 详情
2:查看你的 http 请求方法,以及服务器端的设置
   比如:有一个 强制用 post 请求的接口,你是不是用了非post 请求
3:post 请求参数设置,是不是必须的,json 格式
   比如下面,两段代码,
  如下 json参数,body

问题确定为post请求参数格式问题,因为前两种可能性都很小。

 

@requestMapping

requestMapping参数解释:

 

 

1)products:是设置返回值得格式,“application/json;charset=UTF-8”
2)consumes:是设置请求data的格式
3)params: 指定request中必须包含某些参数值是,才让该方法处理
4)headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求

 

请求和返回常用的有三种格式:

1)application/x-www-form-urlencoded: 默认的表单提交格式,不支持文件
2)multipart/form-data: 用于上传文件,同时也支持普通类型的参数
3)application/json: 提交JSON格式的raw数据,适用于AJAX请求和REST风格的接口

问题解决

一开始使用的是json格式解析请求参数,但是前端发送的格式是x-www-form-urlencoded,所以一直出415错误。

出现415或者400错误的原因在网上找的时候有好几种情况。

1、spring MVC配置不对导致的,这个问题已经有高手做了详细的解释了,链接

2、是spring MVC的使用问题,在设置consumes为x-www-form-urlencoded时需要去掉方法参数中的@RequestBody注解。

 

  @RequestMapping(value = "/update_comment",
      method = RequestMethod.POST, produces = "application/json;charset=UTF-8",
      consumes = "application/x-www-form-urlencoded;charset=UTF-8")
  @ResponseBody
  public BaseResponse updateComment(@RequestBody ReqUpdateComment reqUpdateComment) {}@RequestBody ReqUpdateComment reqUpdateComment) {}

需要把红色部分去掉,这个是spring MVC的限制。

具体解决办法和说明是在Stack Overflow上找到的

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值