feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼處理方式
feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼
錯(cuò)誤代碼
如下:
@FeignClient(value="{}",configuration=FeignClientLogConfiguration.class, contextId="id") public interface FeignClient{ @PostMapping(value="/test", headers={"Content-Type=application/json;charset=gbk"}) String test(String req); }
方法調(diào)用
如下:
@Autowired FeignClient feignClient; public void getTest(請(qǐng)求實(shí)體類 req){ String jsonReq = JSON.toJSONString(req); String resp = feignClient.test(jsonReq); log.info("響應(yīng)報(bào)文:{}", resp);// 日志打印出來中文亂碼 }
在網(wǎng)上尋找各種調(diào)用方法測(cè)試
如:自定義Hystrix熔斷策略,自定義編碼攔截等,效果都不理想;
最后通過更改返回的響應(yīng)對(duì)象,實(shí)現(xiàn)了中文亂碼轉(zhuǎn)換正常
代碼
如下:
import feign.Response; @FeignClient(value="{}",configuration=FeignClientLogConfiguration.class, contextId="id") public interface FeignClient{ @PostMapping(value="/test", headers={"Content-Type=application/json;charset=gbk"}) Response test(String req); }
方法調(diào)用
如下:
@Autowired FeignClient feignClient; public void getTest(請(qǐng)求實(shí)體類 req){ String jsonReq = JSON.toJSONString(req); Response resp = feignClient.test(jsonReq); String resp = this.printToRespInfo(resp); log.info("響應(yīng)報(bào)文:{}", resp);// 日志打印出來中文亂碼 } /** * 格式化提取響應(yīng)數(shù)據(jù) */ private String printToRespInfo(Response response){ InputStream inputStream = null; try{ Response.Body body = response.body(); inputStream = body.asInputStream(); return IOUtils.toString(inputStream, "GBK"); } catch (IOException e){ log.error("response to json is error"); } finally { IOUtils.closeQuietly(inputStream); } return null; }
總結(jié)
好了,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)簡單的RPC框架的示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)簡單的RPC框架的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11Spring Boot 整合 Apache Dubbo的示例代碼
Apache Dubbo是一款高性能、輕量級(jí)的開源 Java RPC 框架,這篇文章主要介紹了Spring Boot 整合 Apache Dubbo的方法,本文通過示例說明給大家講解的非常詳細(xì),需要的朋友可以參考下2021-07-07Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼
這篇文章介紹了Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10基于spring-mvc.xml和application-context.xml的配置與深入理解
這篇文章主要介紹了spring-mvc.xml和application-context.xml的配置與深入解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08淺談Java序列化和反序列化為何要實(shí)現(xiàn)Serializable接口
這篇文章主要介紹了淺談Java序列化和反序列化為何要實(shí)現(xiàn)Serializable接口,序列化最重要的作用是在傳遞和保存對(duì)象時(shí).保證對(duì)象的完整性和可傳遞性,對(duì)象轉(zhuǎn)換為有序字節(jié)流,以便在網(wǎng)絡(luò)上傳輸或者保存在本地文件中,需要的朋友可以參考下2023-12-12一文帶你認(rèn)識(shí)Java中的Object類和深淺拷貝
任何變成語言中,其實(shí)都有淺拷貝和深拷貝的概念,Java 中也不例外,下面這篇文章主要給大家介紹了關(guān)于Java中Object類和深淺拷貝的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04Java Socket使用加密協(xié)議進(jìn)行傳輸對(duì)象的方法
這篇文章主要介紹了Java Socket使用加密協(xié)議進(jìn)行傳輸對(duì)象的方法,結(jié)合實(shí)例形式分析了java socket加密協(xié)議相關(guān)接口與類的調(diào)用方法,以及服務(wù)器、客戶端實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06