力所能及之springmvc NetworkError: 415 Unsupported Media Type

小狼今天在测试springmvc中从json字符串自动转换成实体的技术时,出现问题

首先,小狼创建一个web项目,在lib目录下导入springmvc jar文件,这就不细说了,然后加入json支持类库

在webroo目录下加载jquery.js   json2.js

jsp文件是这么写的:

<html>
  <head>

    <title>My JSP 'index.jsp' starting page</title>

    <script type="text/javascript" src="lib/jquery/jquery-1.4.2.js"></script>
    <script type="text/javascript" src="lib/jquery/json2.js"></script>
    <script type="text/javascript" src="js/sendAjax.js"></script>
  </head>

  <body>
    This is my JSP page. <br>

    <input type="button" onclick="sendAjax2()" value="button2">
  </body>
</html>

springMVC-servlet.xml

	<context:component-scan base-package="qh.zcy.controller"></context:component-scan>
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp"></bean>

sendAjax.js

function sendAjax2() {
	//alert("test");
	var userinfoRef = new userinfo("张臭臭", "zcy");
	var jsonString = JSON.stringify(userinfoRef);
	alert(jsonString);
	//alert(jsonString);

	$.ajax( {
		type : "post",
		url : "getJSONString2.zcy?t=" + new Date().getTime(),
		data : jsonString

	});
}
function userinfo(username, password) {
	this.username = username;
	this.password = password;
}

java控制器

@RequestMapping(value="getJSONString2",method=RequestMethod.POST)
	public String getJsonString2(@RequestBody Userinfo userinfo){
		System.out.println("test");
		System.out.println(userinfo.getUsername()+"   "+userinfo.getPassword());
		return "index2";
	}

运行,很快报错,("NetworkError: 415 Unsupported Media Type - http://localhost:8080/Springmvc_1/getJSONString2.zcy?t=1431859248389")  小狼找了半天,将sendAjax.js修改如下:

function sendAjax2() {
	//alert("test");
	var userinfoRef = new userinfo("张臭臭", "zcy");
	var jsonString = JSON.stringify(userinfoRef);
	alert(jsonString);
	//alert(jsonString);

	$.ajax( {
		type : "post",
		url : "getJSONString2.zcy?t=" + new Date().getTime(),
		data : jsonString,
		contentType : "application/json", 

	});
}
function userinfo(username, password) {
	this.username = username;
	this.password = password;
}

加上contentType : "application/json"。

可是,还是报同样的错误,问题来了,没有加上jackson-all-1.9.8.jar

加上之后还是报相同的错误,为什么呢,原来在springmvc-servlet.xml中加上一行<mvc:annotation-driven></mvc:annotation-driven>

什么原因呢??

首先 ,DefaultAnnotationHandlerMapping对象负责类级别的@RequestMapping注解,而AnnotationMethodHandlerAdapter负责方法级别的@RequestMapping注解,如果使用<mvc:annotation-driven></mvc:annotation-driven>注解,就会自动注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean。

其次,$.post()方法不设置contentType,他有默认的,但是我们要传递的是json类型的字符串。故而,改成$.ajax并设置contentType为application/json,另外,发送的请求内容不要转成json对象,直接发送json字符串即可

最后,也是最重要的,要添加jackson-all-1.9.8.jar  jacksonJSON解析处理类库

时间: 2024-12-21 16:48:54

力所能及之springmvc NetworkError: 415 Unsupported Media Type的相关文章

SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题

一.概述: 本文介绍且记录如何解决在SpringMVC 中遇到415 Unsupported Media Type 的问题,并且顺便介绍Spring MVC的HTTP请求信息转换器HttpMessageConverter. 二.问题描述: 在SprinvMVC的Web程序中,我在页面发送Ajax 的POST请求,然后在服务器端利用@requestBody接收请求body中的参数,当时运行过程中,我想服务器发送Ajax请求,浏览器一直反馈415 Unsupported Media Type或者40

angularjs - 415 (Unsupported Media Type)

angularJs+springMVC angular表单提交一个user实体时,报 angularjs - 415 (Unsupported Media Type)错误!! 原因是$http({ url:'', method:'', //一下红色整个改为----------------------------data:user即可 params:{ user:user } }).success(function(data){ //.... }).error(function(data){ //

System.Net.WebException : The remote server returned an error: (415) UNSUPPORTED MEDIA TYPE

I am having problems with a bit of code that accesses a restful web service. Running this code, it errors out at var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); and the exception returned is: "System.Net.WebException : The remote se

调用Restful Service 出现415 Unsupported Media Type的问题(Rest Request Header中的Content-Type问题)

用Chrome的插件Simple REST Client 调用POST的REST服务时,老是报415错误,如图. 一开始就以为是服务端的问题,各种google,百度,折腾了一下午未果. 晚上继续看,一不小心看到返回的Response的Headers中Content-Type的值与冒号之间有一个空格,于是将Request的Content-Type:application/json;charset=UTF-8改成Content-Type: application/json;charset=UTF-8

RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type

这是本项目的接口 称为client @POST @Path("/{urlcode}") @Consumes(MediaTypes.JSON_UTF_8) @Produces(MediaTypes.JSON_UTF_8) public String invokePostMethod(String postData); 这是远程被调用的接口 称为server @POST @Path("/{urlcode}") @Consumes(MediaTypes.JSON_UTF_

POST JSON fails with 415 Unsupported media type, SpringMVC

网上的解决办法非常多,但是大多不靠谱. 归结原因:SpringMVC 无法通过 httprequest headers 中的 Content-Type 和 Accept 匹配到对应的HttpMessageConverter. 解决办法:修改 httprequest headers中的 Content-Type 和 Accept,让它和你的 SpringMVC 的MessageConverters 中设置的 supportedMediaTypes 中的某一项匹配上就可以了.

HTTP Status 415 – Unsupported Media Type(使用@RequestBody后postman调接口报错)

1.问题描述:使用springMVC框架后,添加数据接口中,入参对象没使用@RequestBody注解,造成postman发起post请求, from-data可以调通接口,但是raw调不通接口,然后我用了SpringMVC @ResponseBody 注解,调接口显示415错误处理. 处理: springmvc添加配置.注解: 1 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHan

SpringMVC---REST POST时出现415 Unsupported Media Type

需要在pom.xml中加jackson依赖   <dependency>             <groupId>org.glassfish.jersey.media</groupId>             <artifactId>jersey-media-json-jettison</artifactId>             <version>${jersey.version}</version>      

AFNetworking报错:(415 Domain=com.alamofire.error.serialization.response Code=-1011 &quot;Request failed: unsupported media type (415)&quot;)

问题? 今天在与后台调接口的时候,遇到一个问题,使用AFNetworking报错,具体如下: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: unsupported media type (415)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: