簡單的text/html無法解析解決記錄

簡單的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 處理類*/@Beanpublic MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();//設置MediaTypeList<MediaType> list = new ArrayList<>();list.add(MediaType.APPLICATION_JSON_UTF8);// text/json;charset=UTF-8list.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.pswp.cn/diannao/40039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40039.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DPO算法推導

DPO 核心思想&#xff1a;直接使用偏好數據進行策略優化&#xff0c;省去 reward 模型策略優化。 技術背景知識&#xff1a; 首先給定prompt x&#xff0c;生成兩個答案 ( y 1 , y 2 ) Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1?,y2?) ΠSFT(y∣x) &#xff0c;并通…

2. Python+Playwright playwright的API

Playwright支持同步和異步兩種API&#xff0c;使用異步API需要導入asyncio庫&#xff0c;它是一個可以用來實現Python協程的庫&#xff0c;更詳細介紹可參考Python協程 。我們可以根據自己的偏好選擇適合的模式。 同步與異步模式原理 同步操作方式&#xff1a;在代碼執行時&am…

c++的const

const在C中是一個非常重要的關鍵字&#xff0c;用于定義不可變的變量、函數參數、成員函數等。它可以提高代碼的可讀性、安全性&#xff0c;并幫助編譯器進行優化。 定義常量 使用const定義不可變的變量&#xff1a; const int MAX_SIZE 100;常量指針 指向常量的指針和常量…

【ARMv8/v9 GIC 系列 5 -- GIC GICD_CTRL 使用詳細介紹】

文章目錄 GICD_CTRLGICD_CTLR 寄存器結構RWP&#xff08;Register Write Pending&#xff09;E1NWF&#xff08;Enable 1 of N Wakeup Functionality&#xff09;DS&#xff08;Disable Security&#xff09; 親和性路由&#xff08;Affinity Routing&#xff09;ARE_NSARE_S 中…

【java計算機畢設】服裝生產管理系統java MySQL springboot vue html maven項目設計源代碼+萬字文檔

目錄 1項目功能 2項目介紹 3項目地址 1項目功能 【java計算機畢設】服裝生產管理系統java MySQL springboot vue html maven項目代碼文檔 2項目介紹 系統功能&#xff1a; 服裝生產管理系統包括管理員、用戶兩種角色。 管理員功能包括個人中心模塊用于修改個人信息和密碼&a…

【UE5.3】筆記6-創建可自由控制Pawn類

搭建場景 搭建一個場景&#xff1a;包含地板、圍墻。可以根據喜好加一些自發光的效果。 增加食物 創建食物藍圖類&#xff0c;在場景里放置一些食物以供我們player去吃掉獲取分值。 創建可控制的layer 我們先右鍵創建一個藍圖繼承自pawn類&#xff0c;起名BP_Player&#xf…

Python-算法編程100例-二分法(入門級)-業務負載分配

題目&#xff1a; 現有一個服務器集群&#xff08;服務器數量為 serverNum&#xff09;&#xff0c;和一批不同類型的任務&#xff08;用數組 tasks 表示&#xff0c;下標表示任務類型&#xff0c;值為任務數量&#xff09;。 現需要把這批任務都分配到集群的服務器上&#x…

2024年在WordPress中創建銷售活動的專家級優惠券方法

2024年在WordPress中創建銷售活動的專家級優惠券方法 今天我想和大家分享一些關于如何在WordPress網站上使用專家級優惠券工具來創建銷售活動的經驗。對于已經在電商領域有一定經驗的店主&#xff0c;利用專家級優惠券不僅能吸引顧客&#xff0c;還能顯著增加銷量。在這篇文章…

【Linux】線程封裝與互斥(萬字)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 目錄 文章目錄 前言 C多線程的用法 對原生線程進行一次封裝 理解pthread線程 Linux線程互斥 進程線程間的互斥相關背景概念 互斥量mutex 操作共享變量會有問題的售票…

[go-zero] goctl 生成api和rpc

文章目錄 1.goctl 概述2.go-zero 需要安裝的組件3.生成 api4.生成 rpc 1.goctl 概述 goctl支持多種rpc&#xff0c;較為流行的是google開源的grpc&#xff0c;這里主要介紹goctl rpc protoc的代碼生成與使用。protoc是grpc的命令&#xff0c;作用是將proto buffer文件轉化為相…

探討命令模式及其應用

目錄 命令模式命令模式結構命令模式適用場景命令模式優缺點練手題目題目描述輸入描述輸出描述題解 命令模式 命令模式是一種行為設計模式&#xff0c; 它可將請求轉換為一個包含與請求相關的所有信息的獨立對象。 該轉換讓你能根據不同的請求將方法參數化、 延遲請求執行或將其…

《亞馬遜搬運亞馬遜產品》配合跟賣采集爬取跟賣店鋪高質量

亞馬遜高質量產品如何搬運&#xff1f;亞馬遜采集亞馬遜。 哈嘍大家好&#xff0c;大家講一下做亞馬遜是發貨、鋪貨這塊的功能。目前這款軟件做跟賣大家都知道&#xff0c;同時也支持做鋪貨。鋪貨可以采集國內的1688、淘寶、京東都可以采&#xff0c;采完之后也可以采速賣通&a…

周周星分享7.3—基于氣象大數據的自動站實況聯合預測

賽題 2024中國高校計算機大賽 — 大數據挑戰賽 經驗分享 大家好&#xff0c;我是掃地僧團隊的隊長&#xff0c;以前參加這樣打榜的比賽比較少&#xff0c;了解的打榜技巧不是太多&#xff0c;所以想從科研的角度給大家一點分享。 這次比賽主要從以下五個步驟進行&#xff1a…

Linux Doxygen快速生成文檔

此前寫過一篇編寫Doxygen格式的注釋以用于生成文檔,點擊以查閱, Doxygen常用語法與字段記錄,但是當時用的windows桌面版的doxygen,最近使用ubuntu編寫代碼想直接使用doxygen生成,故寫下此博客 Doxygen Doxygen是一個用于生成軟件文檔的工具&#xff0c;它可以從代碼中提取注釋…

(四)opengl函數加載和錯誤處理

#include <glad/glad.h>//glad必須在glfw頭文件之前包含 #include <GLFW/glfw3.h> #include <iostream>void frameBufferSizeCallbakc(GLFWwindow* window, int width, int height) {glViewport(0, 0, width, height);std::cout << width << &qu…

PHP多線程爬蟲:高效解析電商網頁內容

如何使用php多線程編寫高效的網頁爬蟲 隨著互聯網的發展和數據的不斷增長&#xff0c;網頁爬蟲成為了一種非常重要的工具。通過網頁爬蟲&#xff0c;我們可以自動地從各種網站上獲取大量的數據&#xff0c;并進行進一步的處理和分析。而PHP作為一種廣泛使用的編程語言&#xf…

Android高級面試_6_性能優化

Android 高級面試-7&#xff1a;網絡相關的三方庫和網絡協議等 1、網絡框架 問題&#xff1a;HttpUrlConnection, HttpClient, Volley 和 OkHttp 的區別&#xff1f; HttpUrlConnection 的基本使用方式如下&#xff1a; URL url new URL("http://www.baidu.com")…

SwanLinkOS首批實現與HarmonyOS NEXT互聯互通,軟通動力子公司鴻湖萬聯助力鴻蒙生態統一互聯

在剛剛落下帷幕的華為開發者大會2024上&#xff0c;伴隨全場景智能操作系統HarmonyOS Next的盛大發布&#xff0c;作為基于OpenHarmony的同根同源系統生態&#xff0c;軟通動力子公司鴻湖萬聯全域智能操作系統SwanLinkOS首批實現與HarmonyOS NEXT互聯互通&#xff0c;率先攻克基…

大模型與機器人精彩碰撞-7月5日晚上八點不見不散!

在瞬息萬變的科技時代&#xff0c;新興人工智能和機器人技術的結合正在引領新一輪的創新浪潮。你是否想成為未來科技的領航者&#xff1f;你是否想了解最前沿的AI與機器人技術&#xff1f;行麥科技重磅推出的“AIGC時代的生存法則”AI系列課&#xff0c;將為你揭開大模型與機器…

創建kset

1、kset介紹 2、相關結構體和api介紹 2.1 struct kset 2.2 kset_create_and_add kset_create_and_addkset_createkset_registerkobject_add_internalkobject_add_internal2.3 kset_unregister kset_unregisterkobject_delkobject_put3、實驗操作 #include<linux/module.…