java - 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
解决方案
在我看来,jpa 注释正在搞乱 json 反序列化。
从 spring 服务器返回的错误可能具有误导性。尝试使用带有 setter 和 getter 的普通对象,看看这是否会改变任何东西。您应该在日志中搜索一些异常。
推荐阅读
- c# - C# 反射:如何搜索程序集并获取泛型类型
- css - 在 Mui 中,如何在我的 css 中使用主题值
- selenium - 使用 selenium 中的单元格引用将数据输入用户名和密码字段
- flutter - 如何添加不支持 Null Safety 的 Flutter 插件
- python - 使用 boto3 和 python 列出 s3 存储桶
- cypress - 如何使用 cypress 拦截具有相同端点的多个 XHR 请求
- pandas - 带有日期的 DataFrame 列转换为 Unix
- python - 在 python 中使用 Newton-Raphson 求解双曲函数
- if-statement - Google Sheet 的 IF 语句公式
- ruby-on-rails - Errno::ENOTTY Inappropriate ioctl for device when trying to send file to SFTP