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)簡(jiǎn)單的RPC框架的示例代碼
本篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)單的RPC框架的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
Spring Boot 整合 Apache Dubbo的示例代碼
Apache Dubbo是一款高性能、輕量級(jí)的開源 Java RPC 框架,這篇文章主要介紹了Spring Boot 整合 Apache Dubbo的方法,本文通過示例說明給大家講解的非常詳細(xì),需要的朋友可以參考下2021-07-07
Java通過接口實(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類和深淺拷貝
任何變成語(yǔ)言中,其實(shí)都有淺拷貝和深拷貝的概念,Java 中也不例外,下面這篇文章主要給大家介紹了關(guān)于Java中Object類和深淺拷貝的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
Java 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

