当Spring MVC找到与URL路径匹配的请求映射,但参数(或标头或其他内容)与处理程序方法期望的不匹配时,通常会看到这种类型的错误。
如果使用@RequestBody批注,那么我相信Spring MVC希望将POST请求的整个主体映射到Object。我猜你的身体不仅仅是一个字符串,而是一些完整的JSON对象。
如果您期望使用JSON对象的Java模型,则可以用doSomething声明中的String参数替换String参数,例如
public void doSomething(@RequestBody MyObject myobj) {
如果您没有与JSON相匹配的Java对象,则可以尝试通过将String
类型替换为a 来使其工作,Map<String, Object>
并查看是否更接近可行的解决方案。
您还可以在Spring MVC中打开调试日志记录,以获取有关为何请求失败的更多信息。
考虑到注释中的要求,您可以简单地将HttpServletRequest注入到您的方法中并自己读取主体。
public void doSomething(HttpServletRequest request) {
String jsonBody = IoUtils.toString( request.getInputStream());
// do stuff
}