Spring MVC @RequestBody接收JSON报HTTP Statusd 415的问题
2016-05-18 17:02
579 查看
HTTP Status 415 -
type Status reportmessage
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
相关文章推荐
- http://www.ablanxue.com/shtml/201411/25904_1.shtml
- 点击获取网络大图(支持缩放)
- 因交换机网卡故障导致的网络无法ping通
- CHttpProxyServer
- android网络编程——http get
- R语言︱SNA-社会关系网络—igraph包(社群划分、画图)(三)
- android网络编程——使用Android中的网络连接
- RHEL7网络管理相关的命令
- TCP的拥塞控制
- 使用AsyncTask 加载网络图片
- Http协议
- Windows网络编程学习笔记(7) TCP socket 状态转换过程
- 只是插了一根网线,全网中断?
- unexpected element (uri:"", local:"sean:person"). Expected elements are <{http://sean.com}person>
- 为sublime text 3 手动安装Package Control, 并设置HTTP 代理
- XMLHttpRequest level2介绍
- 一个基于nodejs,支持http/https的中间人(MITM)代理,便于渗透测试和开发调试。
- HTTP 协议详解
- 基于态势感知的网络安全事件预测方法分析
- Windows网络编程学习笔记(6) Socket关闭、流式协议、分组-重组I/O