您的位置:首页 > 理论基础 > 计算机网络

Spring MVC @RequestBody接收JSON报HTTP Statusd 415的问题

2016-05-18 17:02 579 查看


HTTP Status 415 -

type Status report
message
description The server refused this request because the request entity is in a format not supported by the requested resource for the
requested method.


Apache Tomcat/7.0.55

java.io.IOException:
Server returned HTTP response code: 415 for URL: http://msg.lagou.com/report/sendCloudMail.json at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625)
at com.test.SendCloudMailOrSmsTest.sendPostEMail(SendCloudMailOrSmsTest.java:85)
at com.test.SendCloudMailOrSmsTest.main(SendCloudMailOrSmsTest.java:167)

写了一个以SpringMVC架构的http接口项目,测试的时候用自己写的http测试类调用完全没有问题 ,用浏览器访问就报上面的错误,想着赶一把时髦用@RequestBody吧,结果死活报http415错误,折腾了好久各种配置,各种跟着网上修改,马上都快疯了,马上就要和第三方联调了出这事,但是觉得这个功能太强大了,想赶一把时髦,经过反复测试发现了一个偶然的细节终于搞定了。

网上种种解决方式,包括补充<mvc:annotation-driven />的配置、JavaBean要有无参构造函数、缺Jackson包等等,经检查都不是原因所在(Spring 3.1之后<mvc:annotation-driven/>默认就会载入7种MessageConventer无需多余声明),最后发现问题主要由2个方面造成:

1.浏览器请求时没有设置Content-Type为Json,对于浏览器来说就是要把POST的内容放到jsonData属性中,而不是params。

2.发送的表单内容对象不要转成JSON字符串,直接发送JSON对象即可,否则就415错误!

3.第三方工具没有设置Content-Type的功能,默认的是Content-Type: application/x-www-form-urlencoded
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: