HTTP 状态 415 – 在 Spring MVC 上执行 POST 请求时不支持的媒体类型

我正在尝试在一个简单的 Spring MVC Web 应用程序上发送一个 post 请求,并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


暮色呼如
浏览 275回答 3
3回答

守着星空守着你

尝试了一切,但无法正常工作。也许我在某个地方犯了一个愚蠢的错误,或者我的配置存在严重错误。无论如何,我试图让它与 Spring boot 一起工作,并且工作正常。对于任何有兴趣的人,这是 github 链接 - https://github.com/Sanil2108/spring_hibernate/tree/master/spring_boot1另外,感谢所有试图提供帮助的人!

森林海

对我来说,jpa 注释似乎弄乱了 json 反序列化。从 spring 服务器返回的错误可能会产生误导。尝试使用带有 setter 和 getter 的普通对象,看看这是否会改变任何东西。您应该在日志中搜索一些异常。

30秒到达战场

RequestMapping注释不仅有,consumes而且还有produces。但为了避免对HTTP REST所有这些设置,您可以使用RestController注释和GetMapping,PostMapping等等。你可以在我的github中找到一个例子
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java