简单的text/html无法解析解决记录

news2024/10/6 12:23:52

简单的text/html无法解析解决记录

1. bug发现

我们所有的服务都是微服务,服务间调用都是使用feign接口进行调用,正常调用都没有问题,但是某一天发现部分从esb服务调用过来到我们本地的服务,本地服务再使用feign接口调用其他微服务子模块时候,返回信息报错,提示信息如下:

could not extract response: no suitable HttpMessageConverter found for response type [cn.git.query.dto.CheckDTO] and content type [text/html;charset=UTF-8]

2. 解决方法

我们从esb调用服务过来,本身我们自己的转发网关接收text/json类型的请求也是处理不了的,所以添加了对应的处理类WebMvcConfig,具体如下

package cn.git.server.config;

import cn.git.api.util.NewCoreProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

import java.util.ArrayList;
import java.util.List;

/**
 * 解决text/json无法识别问题
 * @program: bank-credit-sy
 * @author: lixuchun
 * @create: 2022-02-10
 */
@Configuration
public class WebMvcConfig {

    /**
     * 新增请求类型
     * @return MappingJackson2HttpMessageConverter 处理类
     */
    @Bean
    public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        //设置MediaType
        List<MediaType> list = new ArrayList<>();
        list.add(MediaType.APPLICATION_JSON_UTF8);
        // text/json;charset=UTF-8
        list.add(MediaType.valueOf(NewCoreProperties.RESPONSE_TYPE_TEXT_JSON));
        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
        return mappingJackson2HttpMessageConverter;
    }

}

我们的响应类型,则设置了text/html;charset=UTF-8,其中 RESPONSE_TYPE_TEXT = “text/html;charset=UTF-8”,此处响应类型text/html与微服务的响应类型不匹配,无法解析报错,此处信息无法修改,所以需要修改接口调用api部分 具体代码为:
在这里插入图片描述

最终为了方便处理,使用了produces ,定了此端点在成功处理请求后,响应的内容类型应该是指定格式,一般为APPLICATION_JSON_VALUE,具体修改代码如下:

    /**
     * 校验该柜员是否存在未制定贷款到期前或到期后处置计划的贷款
     * @param checkDTO userCd 柜员编号 orgCd 机构编号
     * @return String 0-不存在可以发起 1-存在记录不允许发起
     */
    @ApiOperation(value = "校验是否存在未制定贷款到期前或到期后处置计划的贷款", notes = "校验是否存在未制定贷款到期前或到期后处置计划的贷款")
    @ApiResponses({@ApiResponse(code = 1, message = "OK", response = String.class),
    @ApiResponse(code = -1, message = "ERROR", response = CommonDbInfoDTO.class)})
    @PostMapping(value = "/checkDisposalPlan", produces = {MediaType.APPLICATION_JSON_VALUE})
    CheckDTO checkDisposalPlan(@RequestBody CheckDTO checkDTO);

    /**
     * 校验柜员是否进行准入
     * 该柜员没有准入,请联系管理员!
     * @param userCd 客户经理柜员号 specificLoanType 贷款品种
     * @return Boolean true-准入 false-没准入(提示)
     */
    @ApiOperation(value = "校验柜员是否准入", notes = "校验柜员是否准入")
    @ApiResponses({@ApiResponse(code = 1, message = "OK", response = String.class),
            @ApiResponse(code = -1, message = "ERROR", response = CommonDbInfoDTO.class)})
    @PostMapping(value ="/checkUserStatus/{userCd}/{specificLoanType}", produces = {MediaType.APPLICATION_JSON_VALUE})
    Boolean checkUserStatus(@PathVariable(value = "userCd") String userCd,
                            @PathVariable(value = "specificLoanType") String specificLoanType);

其中produces主要作用如下:

  • 内容协商:当客户端发起请求时,可能会在请求头中包含Accept字段,表明它可以接受哪些类型的响应内容。服务器会根据客户端的偏好和produces指定的内容类型进行匹配,从而决定返回哪种类型的内容给客户端。这样可以确保客户端能够理解并处理接收到的数据
  • 自动序列化:在Spring应用中,比如当指定了响应类型为application/json时,Spring会自动使用如Jackson这样的库将Java对象转换成JSON格式的字符串,然后作为响应体返回。这对于RESTful API而言非常有用,因为JSON是一种广泛支持的数据交换格式
  • 清晰的API契约:明确指定响应类型可以让API的使用者清楚地知道该接口会返回什么类型的数据,有助于前后端分离开发和第三方集成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1868635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑定时重启怎么设置?用这个智能管理电脑定时任务的好帮手!

电脑定时重启怎么设置&#xff1f;用这个智能管理电脑定时任务的好帮手&#xff01;电脑定时重启&#xff0c;这个设置其实很简单&#xff0c;但是很多人都不知道用电脑怎么设置&#xff0c;而且操作也很麻烦&#xff0c;并不好管理&#xff0c;这个时候我们需要一个非常智能的…

模型情景制作-冰镇啤酒

夏日炎炎&#xff0c;当我们在真实世界中开一瓶冰镇啤酒的时候&#xff0c;我们也可以为模型世界中的人物添加一些冰镇啤酒。 下面介绍一种快速酒瓶制造方法&#xff0c;您只需要很少工具&#xff1a; 截取尽量直的流道&#xff08;传说中的板件零件架&#xff09;,将其夹在您的…

adb push 报错 ...error: failed to copy...

一、现象&#xff1a; 原因&#xff1a;没有权限导致的 二、解决方法&#xff1a; adb root adb remount #重新加载文件系统三、再次尝试&#xff1a;adb push xxx.apk /system/app 结果&#xff1a;成功

详细解释Spring事务的传播机制

详细解释Spring事务的传播机制 Spring框架中&#xff0c;事务传播机制是指在一个事务方法调用另一个事务方法时&#xff0c;Spring如何管理这些方法之间的事务边界。Spring提供了七种事务传播行为&#xff0c;以满足不同的业务需求。下面将详细解释每种传播行为及其适用场景&a…

不用翻墙,手把手教你用MAC本地版免费ComfyUI搭建Stable Diffusion工作流,让出图效率起飞

AI绘图如火如荼发展了这么久&#xff0c;从mj到SD webUI,再到时下最热门的Comfy UI。因为显存的问题对Mac用户一直不是很友好&#xff0c;阻碍了大部分设计师上手学习的道路。但是Comflowy解决了这个痛点。这是一款Mac系统可用本地版的sd&#xff0c;一键安装&#xff0c;让苹果…

阿里巴巴找黄金宝箱(IV)

系列文章目录 本人最近再练习算法&#xff0c;所以会发布自己的解题思路&#xff0c;希望大家多指教 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 一、题目描述 贫如洗的椎夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现…

基于SpringBoot学生信息管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

操纵系统的特征调度算法

操纵系统的特征 调度算法是操作系统用来决定各个进程/作业在CPU上执行顺序的方法。最常见的调度算法有&#xff1a;FCFS、SJF、HRRN、RR、HPF和MFQ。这集先介绍前三个 先来先服务 FCFS 根据作业到达的先后顺序调度&#xff0c;CPU会一直运行直到作业结束&#xff0c;所以这个…

跌幅高达10.2分!32本Top,Elsevier旗下在检SSCI期刊(2024年6月影响因子更新版)

本周投稿推荐 SSCI • 1区&#xff0c;4.0-5.0&#xff08;无需返修&#xff0c;提交可录&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.1-0.5&…

AJAX进阶-day4

目录 同步代码和异步代码 回调函数地狱 Promise - 链式调用 async函数和await async函数和await_捕获错误 事件循环-EventLoop 宏任务与微任务 Promise.all 静态方法 同步代码和异步代码 同步代码&#xff1a; 逐行 执行&#xff0c;需 原地等待 结果 后&#xff0c;才…

界面控件Telerik UI for Winforms 2024 Q2新版亮点 - 发布全新的AI相关组件

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件&#xff0c;所有的UI for WinForms控件都具有完整的主题支持&#xff0c;可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for Winform…

超声波清洗机洗眼镜效果好吗?四大主流超声波清洗机终极大测评

清洗眼镜是日常生活中一件很麻烦的事情&#xff0c;常规的清洗方式无法完全清洁镜片上的细菌和污垢&#xff0c;而且容易造成划痕。也有很多朋友为了节省时间&#xff0c;每次清洗眼镜都用衣服衣角随便擦拭擦拭就完事了&#xff0c;但其实这样做往往会很伤眼镜&#xff0c;缩短…

域名 Whois 检测:企业网络安全与品牌保护的利器

域名是企业在互联网上的重要标识&#xff0c;其安全性和合规性直接影响着企业的业务运营和品牌声誉。而域名 Whois 检测通过全面分析和监控域名的 Whois 信息&#xff0c;为企业提供了多方面的保障&#xff0c;帮助企业识别潜在的网络威胁、保护品牌资产、优化域名管理。 那么什…

Shopee API接口——获取商家店铺商品列表

一、引言 在跨境电商领域&#xff0c;Shopee作为东南亚地区领先的电商平台&#xff0c;为众多商家提供了广阔的市场和丰富的销售机会。本文将详细介绍如何通过Shopee API获取商家店铺商品列表&#xff0c;并探讨其应用场景。 二、核心功能介绍 Shopee API获取商家店铺商品列…

netmiko_ssh_华为防火墙

from netmiko import ConnectHandlerip 防火墙ip地址hw_fw {device_type: huawei,host: ip, # 使用 host 字段同时指定 IP 和端口号username: 用户名,password: 密码,port: 50022 # 直接设置 port 字段 }net_connect ConnectHandler(**hw_fw)ou net_connect.send_command…

数据恢复篇:如何在Android上恢复删除的短信

如果您不小心删除了Android设备上的短信并想要检索它们&#xff0c;则可以尝试以下方法&#xff1a; 如何在Android上恢复删除的短信 检查您的备份&#xff1a; 如果您之前备份了Android设备&#xff0c;则可以从备份中恢复已删除的短信。检查您设备的内部存储空间或 Google 云…

科普小课堂|不同版本USB接口详细解析

USB接口凭借其广泛的兼容性和高性能&#xff0c;已成为连接多样外设的主要接口&#xff0c;囊括了日常的键盘、鼠标等输入设备以及其他更多的领域。不仅如此&#xff0c;USB还展现了高度灵活性&#xff0c;能够便捷地转换为其他总线接口&#xff0c;例如实现USB到以太网或USB到…

降低IT运营成本,提升客户体验 |LinkSLA亮相第十届CDIE

6月25-26日&#xff0c;中国数字化创新博览会&#xff08;CDIE 2024&#xff09;在上海张江科学会堂举行。本届展览主题为“AI创新&#xff0c;引领商业增长新格局”&#xff0c;旨在交流企业在数字化时代&#xff0c;如何以科技为驱动&#xff0c;在转型中如何把握机遇&#x…

用Verilog实现4位计数器(时序逻辑)

用Verilog实现4位计数器。&#xff08;时序逻辑&#xff09; 实验目的&#xff1a; 通过用Verilog实现4位计数器&#xff0c;进一步熟悉Verilog的语法和时序逻辑电路。 实验描述&#xff1a; 输入&#xff1a; Clock&#xff1a;如果计数器enable信号为1&#xff0c;那么在…

科研所文件数据很关键,外发图纸如何控制?

图纸是科研所整个科研周期中最重要的资料类型之一。这些图纸主要用于描述和记录研究过程中的各种设计、实验装置、设备或产品原型等。 首先&#xff0c;科研所在进行新技术、新产品或新方法的研发时&#xff0c;通常需要进行详细的设计和规划。在这个过程中&#xff0c;科研人员…