• 问题:使用SpringMVC框架后,接口中入参对象没使用@RequestBody注解,造成postman发起post请求,from-data格式请求可以调通接口,但是raw格式请求调不通接口,然后我加了SpringMVC @ResponseBody 注解,调接口显示415错误。
  • 处理:
    • SpringMVC添加配置、注解:
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean> <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
    • pom.xml添加jackson包引用:
 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.6</version>
</dependency>
    • Ajax请求时没有设置Content-Type为application/json。

  • 注释:按照上面配置完成后,可以使用raw调用接口中包含@RequestBody注解的接口,但是此时你会发现form-data这种方式访问接口又调不通了,百度了下,解决如下:

    • form-data 的 Content-Type 的类型是 application/x-www-form-urlencoded,是表单编码,不同的是还可以提交文件。
    • raw 的话,有几种,常用的是application/json
    • 如果SpringMVC要接受application/json,需要使用 @RequestBody 注解来接收。
    • 也就是说 @RequestBody 注解接收的是application/json格式的参数(json对象),这种参数使用raw传参可以自定义格式为(JSON(application/json)),但是form-data传参的格式是application/x-www-form-urlencoded的,所以调不通接口。

  • springMVC 如果不进行必要配置的话,只支持x-www-form-urlencoded,如果使用form-data会报400 Bad Request错误。
在spring的mvc配置文件中配置对multi的支持即可,如下:

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean> 此时对以上两种编码格式都支持。 注意:此时需要引入
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>

最新文章

  1. Mongodb 学习笔记
  2. javascript base64 字符转换
  3. 【视频演示】FireBase链接已有应用&amp;实时数据库的配置与使用
  4. [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)
  5. 8611&#160;大牛之路I
  6. PHP性能优化简述
  7. C# 百度语音合成
  8. Log4j日志级别
  9. mobile响应式页面meta信息相关记录
  10. Maven--(一个坑)在settings.xml文件中添加mirrors导致无法新建Maven项目
  11. python基础课程_学习笔记26:编程的乐趣
  12. oop6 栈 界面
  13. .bashrc:16: command not found: shopt配置环境变量时出错
  14. Linux下用ls和du命令查看文件以及文件夹大小
  15. [CQOI2006]凸多边形
  16. 小米手机无法连接eclipse调试解决方案
  17. linux系统监控工具
  18. 学习如何设置ssh安全只允许用户从指定的IP登陆
  19. WebApi 异步请求(HttpClient)
  20. Intellij IDEA 自动清除无效 import 和 清除无效 import 的快捷键 ctrl+alt+o

热门文章

  1. DDD学习笔录——领域驱动设计DDD概念总结
  2. NSURLConnection基本用法(苹果原生)
  3. CALayer的基本使用
  4. import gevent 协程 import greenlet
  5. 读书笔记&lt;深入理解JVM&gt;01 关于OutOfMemoryError 堆空间的溢出
  6. 恢复oracle的回收站的所有的表
  7. 如何使用EditPlus将json格式字符串默认为UTF-8格式
  8. ARC100D Equal Cut
  9. getUserMedia API
  10. Git相关安装包打包下载