这篇文章主要介绍了HTTP 415错误-不支持的媒体类型详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
前段时间在使用@请求体注解的时候遇到了一个以前没遇到过的错误,HTTP不支持的媒体类型?这个是个什么鬼,@ResponseBody可以正常工作而一使用@请求体来进行交互就会报这个错误。一直请求不到控制器,我开始总以为是路径或者json格式不对的问题,上网查资料大多也说的是这个问题。可是我已经写了
数据:JSON.stringify(用户),
数据类型: json ,
内容类型:应用程序/JSON;字符集=UTF-8 ,
按照网上的办法也一直不管用,百思不得其解。于是继续在网上找资料,
网上分析原因很多,但找了很久都没解决,基本是以下几类:
springmvc添加配置、注解;
pom.xml添加杰克逊包引用;
埃阿斯请求时没有设置内容类型为应用程序/json
发送的请求内容不要转成JSON对象,直接发送JSON字符串即可
各种办法都尝试了一遍,还是没有能解决问题;
脚本
jQuery(函数($){
var urlStr= %=请求。getcontextpath()%/user/GetUser ;
定义变量用户={
id : 6,
用户名":"小红,
密码: 123 ,
"年龄":12岁
};
$.ajax({
url : urlStr,
类型: POST ,
数据:JSON.stringify(用户),//转JSON字符串
数据类型: json ,
内容类型:应用程序/JSON;charset=UTF-8 ,//内容类型很重要
成功:功能(结果){
console.log(结果);
//alert(结果);
//data=eval(( result ));
//alert(数据);
$(#a ).html(结果。用户名);
}
});
});
/脚本
造了一个简单是数据来测试,还是不行。
包com。cn。hnust。控制器;
导入javax。servlet。http。http servlet请求;
导入org。spring框架。豆子。工厂。注释。自动连线;
导入org。spring框架。刻板印象。控制器;
导入org。spring框架。ui。模型;
导入org。spring框架。网络。绑定。注释。请求正文;
导入org。spring框架。网络。绑定。注释。请求映射;
导入org。spring框架。网络。绑定。注释。请求方法;
导入org。spring框架。网络。绑定。注释。响应正文;
导入com。cn。hnust。域。用户;
导入com。cn。hnust。服务。iuser服务;
@控制器
@RequestMapping(/user )
公共类用户控制器{
@自动连线
私有IUserService用户服务;
@RequestMapping(/showUser )
公共字符串toIndex(HttpServletRequest请求,模型型号){
//int userId=integer。解析int(请求。getparameter( id );
//用户User=this。用户服务。getuser byid(userId);
//model.addAttribute(user ,用户);
返回”显示用户”;
}
@请求映射(value=/GetUser ,method=RequestMethod .帖子)
public @ResponseBody
用户GetUser(@RequestBody用户用户){
用户。设置用户名(魏);
返回用户;
}
}
控制器也很简单,可是就是请求不到控制器方法。于是我继续在网上寻找资料,直到看到一篇博客,才找到了问题的解决办法。
原来是杰克逊的依赖问题,spring3.x和spring4.x是不同的:
spring3.x是org。spring框架。http。转换器。JSON。mappingjacksonhtpmessageconverter
spring4.x是org。spring框架。http。转换器。JSON。映射Jackson 2 http消息转换器
具体可以查看弹簧网的冲突确认,哪个存在用哪个!
在配置视图解析器的时候应该指定响应的版本,于是我将springmvc的配置文件改为:
豆
org。spring框架。网络。servlet。查看。contentnegotiatingviewrolver
属性名称=订单值=1 /
属性名=媒体类型
地图
条目键=json 值=application/json /
条目关键字=xml 值=应用程序/xml /
entry key= htm value= text/html /
/地图
/属性
属性名=默认视图
目录
!- JSON视图-
豆
org。spring框架。网络。servlet。查看。JSON。映射Jackson 2 JSON视图
/bean
/列表
/属性
属性名称=ignoreAcceptHeader 值=true /
/bean
只会
MappingJacksonJsonView
代替
MappingJackson2JsonView
关于HTTP 415错误-不支持的媒体类型的详细解释,本文到此为止。有关HTTP 415错误-不支持的媒体类型的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!