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

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

  • 注:按照上面配置完成后可以使用raw调用接口中包含@RequestBody注解的接口,但是此时你会发现form-data这种方式访问接口又调不通了,百度了下,解决如下:
  1. form-data 的 Content-Type 的类型是 application/x-www-form-urlencoded,是表单编码,不同的是还可以提交文件。
  2. raw 的话,有几种,常用的是application/json
  3. 如果SpringMVC要接受application/json,需要使用 @RequestBody 注解来接收。
  4. 也就是说 @RequestBody 注解接收的是application/json格式的参数,这种参数使用raw传参可以自定义格式为(JSON(application/json)),但是form-data传参的格式是application/x-www-form-urlencoded的,所以调不通接口。
  • 参考:
  1. https://blog.csdn.net/leyangjun/article/details/79221765
  2. https://blog.csdn.net/yixiaoping/article/details/45281721#comments
  • 注:
 1 1.使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的form-data调接口,接口能调通,但是值传不进来。
 2 2.使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的form-data调接口,接口不能调通,报415错误。
 3 
 4 
 5 
 6 3.使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口能调通,但是值传不进来。
 7 
 8 4.使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口能调通,值能传入,完成添加操作。
 9 
10 
11 
12 5.不使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口能调通,但是值传不进来。
13 
14 6.不使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的raw (application/json)调接口,接口不能调通,报415错误。
15 
16 
17 
18 7.不使用上述处理配置完成后,不使用@RequestBody注解的话,通过postman的form-data调接口,接口能调通,但是值传不进来。
19 
20 8.不使用上述处理配置完成后,使用@RequestBody注解的话,通过postman的form-data调接口,接口不能调通,报415错误。
View Code

 


 

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>

 

转载于:https://www.cnblogs.com/LJing21/p/10485146.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值