首页 > 解决方案 > HTTP 状态 415 - 在 Spring MVC 上执行 POST 请求时不受支持的媒体类型

问题描述

我正在尝试在一个简单的 Spring MVC Web 应用程序上发送一个发布请求,并RequestBody在我的控制器中使用将 JSON 转换为 Java 对象,但无论出于何种原因,我不断收到HTTP Status 415 – Unsupported Media Type. 我花了很多时间试图找到解决方案,但似乎没有任何效果。

我的控制器中的 get 方法似乎工作正常。这是我的原始代码

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping(value = "/users", method = RequestMethod.POST)
public class MyControllerAgain {

    @RequestMapping(method = RequestMethod.POST, consumes = "application/json")
    public void handleJson(@RequestBody Contact c) {
        System.out.println(c);
    }

    @RequestMapping(method = RequestMethod.GET, consumes = "application/json")
    public void handleGet() {
        System.out.println("a");
    }
}

这是我的Contact

public class Contact {

    int id;

    public String name;

    public int number;

    public Contact(){}

    // Getters and setters
}

我正在向 Postman 发送请求,这就是它的样子

POST /users HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Accept: application/json
Cache-Control: no-cache
Postman-Token: 511c9e03-4178-380d-58f8-db24a3245b9e

{
    "id":1,
    "name":"something",
    "number":1
}

我还尝试在我的pom.xml. 我已经尝试更改注释中的消费值,@RequestMapping并且我已经尝试了我的请求中的所有标头接受和内容类型的组合。

另外,如果我使用@ModelAttribute而不是,那么除了类中的所有字段都为空@RequestBody之外,一切正常。Contact

这是 github 链接 - https://github.com/Sanil2108/test_springmvc

标签: javaspringspring-mvccontent-type

解决方案


在我看来,jpa 注释正在搞乱 json 反序列化。

从 spring 服务器返回的错误可能具有误导性。尝试使用带有 setter 和 getter 的普通对象,看看这是否会改变任何东西。您应该在日志中搜索一些异常。


推荐阅读