http请求状体码415

http请求状体码415
转:https://blog.csdn.net/ccecwg/article/details/42100027
(没找到原文地址哈,个人排了下版)

@RequestBody导致http 415错误

HTTP 415 错误 – 不支持的媒体类型(Unsupported media type)

出现这个错误的原因是因为服务端mvc参数上使用了@RequestBody注解,但是请求头没有指定合适的格式.
首先整理一下@RequestBody注解的适用场景:

  1. 该注解常用来处理的Content-Type: 例如application/json, application/xml等,而不是application/x-www-form-urlencoded编码的内容;
  2. 它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。
  3. 因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverter api;

示例代码:

@RequestMapping(value = "/something", method = RequestMethod.PUT)  
public void handle(@RequestBody String body, Writer writer) throws IOException {  
  writer.write(body);  
}  

//...

@RequestMapping(value = "/something", method = RequestMethod.PUT)  
public void handleForm(@RequestBody MultiValueMap<String, String> map) throws IOException {  
  writer.write(body);  
}  

还有一个类似的注解@RequestParam :

  1. 该注解常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
  2. 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
  3. 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

示例代码:

	// ...    
    @RequestMapping(method = RequestMethod.GET)  
    public String setupForm(@RequestParam("petId") int petId, ModelMap model) {  
        Pet pet = this.clinic.loadPet(petId);  
        model.addAttribute("pet", pet);  
        return "petForm";  
    }  
    // ...  

补充:
关于HttpMessageConverter推荐这篇文章:
https://blog.csdn.net/lovesomnus/article/details/73918025

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值