当前位置: 首页 > 知识库问答 >
问题:

在将spring升级到2.3之后获取HttpMessageNodeReadableException。11释放

和谦
2023-03-14

以前的版本: springCloudVersion="格林威治。RELEASE"springBootVersion="2.1.13.发布”

升级版本: springCloudVersion="Hoxton.SR3"springBootVersion="2.3.11.发布”

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)

我尝试过的事情:

  1. 尝试使用后映射而不是请求映射。
  2. 使用了不同的媒体类型,但都不起作用。

任何帮助都将不胜感激。

共有1个答案

葛霄
2023-03-14

问题解决了。我们对这个请求有一个包装。

我仍然不知道在提到的两个spring启动版本之间发生了什么变化,但正在阅读servletRequest。CachingRequestWrapper中的parameterMap解决了该问题。

我在这里发现:@RequestParam,内容类型为application/x-www-form-urlencoded,在SpringBoot2.2中不起作用

 类似资料:
  • WARNING 本升级指南仅适用于 2.2 版本升级至 2.3 版本,如果你并非 2.2 版本,请查看其他升级指南,Plus 程序不允许跨版本升级! 更新代码 预计耗时: 2 小时 这是你自我操作的步骤,确认将你的 2.2 版本代码升级到 2.3 版本,如果你做过一些自定义修改可能会出现代码冲突,你需要解决。 升级依赖 预计耗时: 3 分钟 进入 Plus 程序目录,执行: composer up

  • 我正在将我的Maven构建的Java 8应用程序升级到Java 11。在我的POM中,我指定: 当我使用普通的Maven构建调用来构建我的应用程序时: 我得到: 因此,看起来<code>maven编译器插件:3.8.1 那么,我怎么知道是什么把它拉进来并使用它呢?或者如果这不是正在发生的事情,那是什么,我该如何修复它?

  • 我尝试将笔记本电脑上的Java(运行视窗10)从Java10升级到Java11。我从Oracle网站下载并安装了Java11 SDK,然后我将bin文件夹的地址添加到路径系统变量中,并更改JAVA_Home指向新的jdk文件。 Path系统变量如下所示: And JAVA_HOME: 尽管如此,当我打开CMD并运行:时,我得到Java10,尽管使用我得到Java11。 我遵循了这里描述的步骤:如何

  • 我需要将spring boot从2.3.7升级到2.4.1。释放。当我更新pom文件时,在spring-security-oauth2依赖项(版本2.4.1.RELEASE)中出现错误。在升级spring版本spring-security-oauth2 2.4.1之前。版本,与springboot 2.3.7配合良好。释放 我的pom文件依赖项: 当我尝试运行我的应用程序时,这是我的例外- 如何更

  • 我有一个maven java项目。SDK是Java8,现在我想升级到Java11。我还想将所有依赖项升级到最新的依赖项。这是一个spring项目(不是spring boot!!) 我可以解决所有不同的升级问题,但是在实体管理器工厂中设置持久性提供程序类时出错。 实现了 然而,方法需要一个 我有过 还有一件事对我来说很奇怪。在IntelliJ中,当我打开的类时,它说字节码版本是java 8,但是ja

  • 我最近将我项目的android studio版本从2.3Canary2更新到了2.3Canary3。从那以后,gradle构建每次都失败,错误是: Gradle的依赖项缓存可能已损坏(这有时发生在网络连接超时之后。)重新下载依赖项和同步项目(需要网络) 分级构建进程(守护进程)的状态可能已损坏。停止所有Gradle守护进程可能会解决这个问题。停止分级生成进程(需要重新启动) 您的项目使用的第三方插