feign调用第三方接口,编码定义GBK,响应中文乱码处理方式

 更新时间:2024年01月10日 17:03:59   作者:耨耨菲  
这篇文章主要介绍了feign调用第三方接口,编码定义GBK,响应中文乱码处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

feign调用第三方接口,编码定义GBK,响应中文乱码

错误代码

如下:

@FeignClient(value="{}",configuration=FeignClientLogConfiguration.class, contextId="id")
public interface FeignClient{
    @PostMapping(value="/test", headers={"Content-Type=application/json;charset=gbk"})
    String test(String req);
}

方法调用

如下:

@Autowired
FeignClient feignClient;
public void getTest(请求实体类 req){
    String jsonReq = JSON.toJSONString(req);
    String resp = feignClient.test(jsonReq);
    log.info("响应报文:{}", resp);// 日志打印出来中文乱码
}

在网上寻找各种调用方法测试

如:自定义Hystrix熔断策略,自定义编码拦截等,效果都不理想;

最后通过更改返回的响应对象,实现了中文乱码转换正常

代码

如下:

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);
}

方法调用

如下:

@Autowired
FeignClient feignClient;
public void getTest(请求实体类 req){
    String jsonReq = JSON.toJSONString(req);
    Response resp = feignClient.test(jsonReq);
    String resp = this.printToRespInfo(resp);
    log.info("响应报文:{}", resp);// 日志打印出来中文乱码
}
 
/**
* 格式化提取响应数据
*/
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;
}

总结

好了,以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot webflux使用方法解析

    Spring Boot webflux使用方法解析

    这篇文章主要介绍了Spring Boot webflux使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Springboot打包代码,反编译后代码混淆方式(防止还原代码)

    Springboot打包代码,反编译后代码混淆方式(防止还原代码)

    文章主要介绍了如何对Spring Boot项目进行jar包混淆,以防止反编译还原原始代码,通过在项目中添加proguard.cfg文件并配置Maven插件,可以实现代码混淆,从而增加反编译的难度
    2024-11-11
  • IDEA引入本地jar包的几种方法

    IDEA引入本地jar包的几种方法

    本文主要介绍了IDEA引入本地jar包的几种方法,文中通过图文结合的方式码介绍的非常详细,对大家的学习或工作有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2024-01-01
  • 深入学习java并发包ConcurrentHashMap源码

    深入学习java并发包ConcurrentHashMap源码

    这篇文章主要介绍了深入学习java并发包ConcurrentHashMap源码,整个 ConcurrentHashMap 由一个个 Segment 组成,Segment 代表”部分“或”一段“的意思,所以很多地方都会将其描述为分段锁。,需要的朋友可以参考下
    2019-06-06
  • SpringBoot整合java诊断工具Arthas解读

    SpringBoot整合java诊断工具Arthas解读

    这篇文章主要介绍了SpringBoot整合java诊断工具Arthas,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Spring Boot 实现字段唯一校验功能(实例代码)

    Spring Boot 实现字段唯一校验功能(实例代码)

    这篇文章主要介绍了Spring Boot 实现字段唯一校验,实现代码很简单,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Spring实现数据库读写分离详解

    Spring实现数据库读写分离详解

    这篇文章主要介绍了Spring 实现数据库读写分离,大多数系统都是读多写少,为了降低数据库的压力,可以对主库创建多个从库,从库自动从主库同步数据,程序中将写的操作发送到主库,将读的操作发送到从库去执行,需要的朋友可以参考下
    2024-01-01
  • 解决maven父子工程install的时候排除某些子模块,让子模块不install问题

    解决maven父子工程install的时候排除某些子模块,让子模块不install问题

    在Maven父子工程中,如果希望某个子模块不被安装到本地仓库,可以在该子模块的`pom.xml`文件中添加以下配置: ```xml ... org.apache.maven.plugins maven-install-plugin 2.5.2 true
    2024-12-12
  • Java编程guava RateLimiter实例解析

    Java编程guava RateLimiter实例解析

    这篇文章主要介绍了Java编程guava RateLimiter实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 关于mybatis3中@SelectProvider的使用问题

    关于mybatis3中@SelectProvider的使用问题

    这篇文章主要介绍了mybatis3中@SelectProvider的使用技巧,@SelectProvide指定一个Class及其方法,并且通过调用Class上的这个方法来获得sql语句,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-12-12

最新评论