feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼處理方式
更新時間:2024年01月10日 17:03:59 作者:耨耨菲
這篇文章主要介紹了feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
feign調(diào)用第三方接口,編碼定義GBK,響應(yīng)中文亂碼
錯誤代碼
如下:
@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(請求實體類 req){ String jsonReq = JSON.toJSONString(req); String resp = feignClient.test(jsonReq); log.info("響應(yīng)報文:{}", resp);// 日志打印出來中文亂碼 }
在網(wǎng)上尋找各種調(diào)用方法測試
如:自定義Hystrix熔斷策略,自定義編碼攔截等,效果都不理想;
最后通過更改返回的響應(yīng)對象,實現(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(請求實體類 req){ String jsonReq = JSON.toJSONString(req); Response resp = feignClient.test(jsonReq); String resp = this.printToRespInfo(resp); log.info("響應(yīng)報文:{}", 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é)
好了,以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 整合 Apache Dubbo的示例代碼
Apache Dubbo是一款高性能、輕量級的開源 Java RPC 框架,這篇文章主要介紹了Spring Boot 整合 Apache Dubbo的方法,本文通過示例說明給大家講解的非常詳細(xì),需要的朋友可以參考下2021-07-07基于spring-mvc.xml和application-context.xml的配置與深入理解
這篇文章主要介紹了spring-mvc.xml和application-context.xml的配置與深入解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08淺談Java序列化和反序列化為何要實現(xiàn)Serializable接口
這篇文章主要介紹了淺談Java序列化和反序列化為何要實現(xiàn)Serializable接口,序列化最重要的作用是在傳遞和保存對象時.保證對象的完整性和可傳遞性,對象轉(zhuǎn)換為有序字節(jié)流,以便在網(wǎng)絡(luò)上傳輸或者保存在本地文件中,需要的朋友可以參考下2023-12-12Java Socket使用加密協(xié)議進(jìn)行傳輸對象的方法
這篇文章主要介紹了Java Socket使用加密協(xié)議進(jìn)行傳輸對象的方法,結(jié)合實例形式分析了java socket加密協(xié)議相關(guān)接口與類的調(diào)用方法,以及服務(wù)器、客戶端實現(xiàn)技巧,需要的朋友可以參考下2017-06-06