将 [=s10=] 升级到 2.3.11 RELEASE 后获取 HttpMessageNotReadableException
Getting HttpMessageNotReadableException after upgarding spring to 2.3.11RELEASE
以前的版本:
springCloudVersion = "Greenwich.RELEASE"
springBootVersion = "2.1.13.RELEASE"
升级版本:
springCloudVersion = "Hoxton.SR3"
springBootVersion = "2.3.11.RELEASE"
Spring代码:
@RequestMapping(method = RequestMethod.POST, value = "valuemodified", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<OutputResource> processRequest(@RequestBody String jsonString) {
邮递员电话:
升级后出错:
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public TestController.processRequest(java.lang.String)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:161)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
我尝试过的东西:
- 尝试使用后映射而不是请求映射。
- 使用了不同的媒体类型
但是 none 起作用了。
如有任何帮助,我们将不胜感激。
问题已解决。我们对请求进行了包装。
我仍然不知道提到的两个 spring 启动版本之间发生了什么变化,但正在阅读 servletRequest。 CachingRequestWrapper 中的 parameterMap 解决了这个问题。
我在这里找到的东西:@RequestParam with content type application/x-www-form-urlencoded not working in Spring Boot 2.2
以前的版本: springCloudVersion = "Greenwich.RELEASE" springBootVersion = "2.1.13.RELEASE"
升级版本: springCloudVersion = "Hoxton.SR3" springBootVersion = "2.3.11.RELEASE"
Spring代码:
@RequestMapping(method = RequestMethod.POST, value = "valuemodified", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<OutputResource> processRequest(@RequestBody String jsonString) {
邮递员电话:
升级后出错:
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public TestController.processRequest(java.lang.String)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:161)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:167)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
我尝试过的东西:
- 尝试使用后映射而不是请求映射。
- 使用了不同的媒体类型 但是 none 起作用了。
如有任何帮助,我们将不胜感激。
问题已解决。我们对请求进行了包装。
我仍然不知道提到的两个 spring 启动版本之间发生了什么变化,但正在阅读 servletRequest。 CachingRequestWrapper 中的 parameterMap 解决了这个问题。
我在这里找到的东西:@RequestParam with content type application/x-www-form-urlencoded not working in Spring Boot 2.2