我正在运行一个带有嵌入式码头的Spring MVC 3 maven应用程序,配置如下:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.14</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<testClassesDirectory>/Users/mydownloads/Downloads/jackson-all-1.8.10.jar</testClassesDirectory>
<useTestClasspath>true</useTestClasspath>
</configuration>
</plugin>
如上所示,我在测试类路径中有jackson-all-1.8.10 jar
。
我有以下映射,当我从控制器生成json时工作正常:
@RequestMapping(value="/getSomething",produces="application/json",method=RequestMethod.GET)
但是,当我尝试使用POST
映射时,我收到错误:415: Unsupported Media Type
我用于POST的注释是:
@RequestMapping(value="/postSomething", consumes="application/json", method= RequestMethod.POST)
如何解决此问题,以便坐在类路径中的jackson jar处理媒体类型?
在我发出请求POST数据的客户端上,请求有以下标题:
Request URL:http://localhost:8080/myapp/postSomething
Request Method:POST
Status Code:415 Unsupported Media Type
**Request Headersview source**
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:23
Content-Type:application/x-www-form-urlencoded
Cookie:JSESSIONID=1f0mox1qw67zl
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/myapp/
X-Requested-With:XMLHttpRequest
我在jQuery上有datatype: 'json'
答案 0 :(得分:0)
您未正确设置请求Content-Type
。
正如您在发布的标头中看到的那样,Content-Type
标头值为application/x-www-form-urlencoded
,这是jquery默认值。
在jquery ajax调用中使用contentType: 'application/json'
属性。
dataType
属性告诉jquery响应中预期的内容类型。