【问题标题】:HTTP 415 unsupported media type Using Spring MVC Restful Web Services使用 Spring MVC Restful Web 服务的 HTTP 415 不受支持的媒体类型
【发布时间】:2020-01-07 09:35:53
【问题描述】:

我正在使用 Spring MVC 和 Java8 构建 Restful Web 服务,但由于以下错误,我无法执行 Post 请求:

服务器拒绝此请求,因为请求实体的格式不受所请求方法的请求资源支持。

这是我的控制器类

@RestController
public class SpringRestWebService {

    @RequestMapping(value = "/employee",method = RequestMethod.POST,consumes="application/json")
    public ResponseEntity<Employee> addEmployee(@RequestBody final Employee employee)
    {
        return new ResponseEntity<Employee>(HttpStatus.OK);
    }

}

这是包含用于 JSON 解析的杰克逊库的 POM 文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.inov8</groupId>
    <artifactId>MavenRestWebServices</artifactId>
    <version>1.0-SNAPSHOT</version>

   <dependencies>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-core</artifactId>
           <version>5.0.8.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
           <version>5.0.8.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>5.0.8.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>3.1.0</version>
       </dependency>

       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-core</artifactId>
           <version>2.6.0</version>
       </dependency>

       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
           <version>2.6.0</version>
       </dependency>

   </dependencies>
</project>

模型类:员工

public class Employee {

    private String id;
    private String name;

    public Employee()
    {

    }

    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

注意:我将 application/json 作为内容类型包含在请求标头中,此外,我能够成功执行 Get 请求,问题仅在于 POST 请求。

邮递员请求

我已经尝试了互联网上所有可用的选项,但我仍然面临错误。

【问题讨论】:

  • 我们需要更多关于客户端的信息。你是如何创建你的请求的?你有客户端代码吗?
  • 我正在使用 Postman 访问服务
  • 您能否添加一张显示您的 Postman 请求的屏幕截图?
  • 如果以原始模式传递请求正文,请将文本更改为 json
  • 您是否将 RestWebServices 设置为端点的前缀?

标签: java spring rest spring-boot spring-mvc


【解决方案1】:

让我感谢 Stak 溢出社区对我的帮助。在详细调查问题后,我知道 Http 415 Unsupported Media Type 是由于我的 servlet.xml 中缺少 &lt;annotation-driven/&gt; 造成的。添加后我可以摆脱这个错误。

此外,如果您遇到类似的错误,您可以访问下面的链接进行纠正。

https://inneka.com/programming/ajax/post-json-fails-with-415-unsupported-media-type-spring-3-mvc/

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 2014-05-25
    • 2023-03-04
    • 2017-05-20
    • 2014-11-04
    • 2017-07-05
    • 2015-08-29
    • 2015-06-17
    相关资源
    最近更新 更多