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)文章
Springboot打包代碼,反編譯后代碼混淆方式(防止還原代碼)
文章主要介紹了如何對(duì)Spring Boot項(xiàng)目進(jìn)行jar包混淆,以防止反編譯還原原始代碼,通過在項(xiàng)目中添加proguard.cfg文件并配置Maven插件,可以實(shí)現(xiàn)代碼混淆,從而增加反編譯的難度2024-11-11
深入學(xué)習(xí)java并發(fā)包ConcurrentHashMap源碼
這篇文章主要介紹了深入學(xué)習(xí)java并發(fā)包ConcurrentHashMap源碼,整個(gè) ConcurrentHashMap 由一個(gè)個(gè) Segment 組成,Segment 代表”部分“或”一段“的意思,所以很多地方都會(huì)將其描述為分段鎖。,需要的朋友可以參考下2019-06-06
Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn)功能(實(shí)例代碼)
這篇文章主要介紹了Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn),實(shí)現(xiàn)代碼很簡(jiǎn)單,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Spring實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離詳解
這篇文章主要介紹了Spring?實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離,大多數(shù)系統(tǒng)都是讀多寫少,為了降低數(shù)據(jù)庫(kù)的壓力,可以對(duì)主庫(kù)創(chuàng)建多個(gè)從庫(kù),從庫(kù)自動(dòng)從主庫(kù)同步數(shù)據(jù),程序中將寫的操作發(fā)送到主庫(kù),將讀的操作發(fā)送到從庫(kù)去執(zhí)行,需要的朋友可以參考下2024-01-01
解決maven父子工程install的時(shí)候排除某些子模塊,讓子模塊不install問題
在Maven父子工程中,如果希望某個(gè)子模塊不被安裝到本地倉(cāng)庫(kù),可以在該子模塊的`pom.xml`文件中添加以下配置: ```xml ... org.apache.maven.plugins maven-install-plugin 2.5.2 true2024-12-12
Java編程guava RateLimiter實(shí)例解析
這篇文章主要介紹了Java編程guava RateLimiter實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
關(guān)于mybatis3中@SelectProvider的使用問題
這篇文章主要介紹了mybatis3中@SelectProvider的使用技巧,@SelectProvide指定一個(gè)Class及其方法,并且通過調(diào)用Class上的這個(gè)方法來獲得sql語句,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12

