返回顶部
首页 > 资讯 > 后端开发 > JAVA >解决:No converter for [xxxx] with preset Content-Type ‘text/plain;version=0.0.4;charset=utf-8‘
  • 513
分享到

解决:No converter for [xxxx] with preset Content-Type ‘text/plain;version=0.0.4;charset=utf-8‘

javaspring 2023-09-01 07:09:42 513人浏览 安东尼
摘要

文章目录 项目背景问题描述问题分析解决方案方案一:修改Controller定义方案二:修改Controller返回值方案三:全局处理 项目背景 Spring Boot 2.X 问

文章目录

项目背景

Spring Boot 2.X

问题描述

错误信息如下:

org.springframework.Http.converter.HttpMessageNotWritableException: No converter for [xxxx] with preset Content-Type 'text/plain;version=0.0.4;charset=utf-8'    at org.springframework.WEB.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:312)    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)    at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:78)    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124)    at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:428)    at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:75)    at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141)    at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80)    at org.springframework.web.servlet.DispatcherServlet.processhandlerException(DispatcherServlet.java:1323)    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1134)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1080)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)    at javax.servlet.http.httpservlet.service(HttpServlet.java:655)    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

问题分析

例如上述错误信息,项目出现了某种异常,并且响应对象设置了响应头,如: Content-Type ‘text/plain;version=0.0.4;charset=utf-8’。
当内部抛出了异常后,项目中的全局异常处理返回了一个通用的实体对象,是JSON格式,和响应头的Content-Type不一致,导致springMVC在转换的时候报此类错误。

问题出现场景:

一般出现在,文件下载接口的实现上;
或者,程序内部抛出:ClientAbortException: java.io.IOException: 断开的管道

解决方案

方案一:修改Controller定义

适合场景:返回格式只需兼容的情况

手动指定响应头,设置兼容其它格式,例如:

@PostMapping(value = "xxxx",  produces = {MediaType.APPLICATION_OCTET_STREAM_VALUE, MediaType.APPLICATION_jsON_VALUE})

方案二:修改Controller返回值

适合场景:文件下载接口等

解决:原来有返回值的话,修改为返回void。因为文件下载接口,一般是借助HttpServletResponse对象来直接返回的。

方案三:全局处理

解决:在全局异常的处理中,加上下面的逻辑:

@ControllerAdvice@Slf4jpublic class GlobalExceptionHandler {    public static final String CLIENT_ABORT_EXCEPTION_CLASS = "org.apache.catalina.connector.ClientAbortException";    @ExceptionHandler(Exception.class)    public void handleException(Exception e, HttpServletResponse response) {        if (CLIENT_ABORT_EXCEPTION_CLASS.equals(e.getClass().getName())) {            log.warn("出现ClientAbortException");            return;        };        log.error("全局异常信息:{}", e.getMessage(), e);    }}

来源地址:https://blog.csdn.net/u014163312/article/details/129804820

--结束END--

本文标题: 解决:No converter for [xxxx] with preset Content-Type ‘text/plain;version=0.0.4;charset=utf-8‘

本文链接: https://lsjlt.com/news/387767.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作