java 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
}
我向邮递员发送了一个请求,看起来就是这样
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
}
我还尝试在我的^{@RequestMapping
注释中的consume值,并尝试过我请求中的所有头部accept和内容类型组合
此外,如果我使用@ModelAttribute
而不是@RequestBody
,那么除了Contact
类中的所有字段都为空之外,其他一切都可以正常工作
这里是github链接https://github.com/Sanil2108/test_springmvc
# 1 楼答案
什么都试过了,但都没成功。也许我在某个地方犯了一个愚蠢的错误,或者我的配置有严重问题。不管怎样,我试着让它与弹簧靴一起工作,它工作得很好。对于任何感兴趣的人,这里是github链接https://github.com/Sanil2108/spring_hibernate/tree/master/spring_boot1
同时,感谢所有试图帮助我们的人
# 2 楼答案
在我看来,jpa的提名似乎把json的反序列化搞砸了
从spring服务器返回的错误可能具有误导性。 尝试将普通对象与setter和getter一起使用,看看这是否会改变什么。 你应该在日志中搜索一些异常
# 3 楼答案
向
handleGet
方法添加映射,例如:--更新--
从GET call中删除
consumes = "application/json"
部分。它发现,监听“/users”的两个请求都可以使用json数据,但一个是GET,另一个是POST--第二次更新-- 这肯定会奏效的。测试