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

总结

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

相关文章

  • Java实现优雅的参数校验方法详解

    Java实现优雅的参数校验方法详解

    这篇文章主要为大家详细介绍了Java语言如何实现优雅的参数校验,文中的示例代码讲解详细,对我们学习Java有一定是帮助,需要的可以参考一下
    2022-06-06
  • 基于JAVA代码 获取手机基本信息(本机号码,SDK版本,系统版本,手机型号)

    基于JAVA代码 获取手机基本信息(本机号码,SDK版本,系统版本,手机型号)

    本文给大家介绍基于java代码获取手机基本信息,包括获取电话管理对象、获取手机号码、获取手机型号、获取SDK版本、获取系统版本等相关信息,对本文感兴趣的朋友一起学习吧
    2015-12-12
  • Java中stream处理中map与flatMap的比较和使用案例

    Java中stream处理中map与flatMap的比较和使用案例

    这篇文章主要介绍了Java中stream处理中map与flatMap的比较和使用案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 解决SpringBoot运行报错:找不到或无法加载主类的问题

    解决SpringBoot运行报错:找不到或无法加载主类的问题

    这篇文章主要介绍了解决SpringBoot运行报错:找不到或无法加载主类的问题,具有很好的参考价值,对大家的学习或工作有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • 利用Intellij Idea连接远程服务器实现远程上传部署功能

    利用Intellij Idea连接远程服务器实现远程上传部署功能

    大家在使用Intellij Idea开发程序的时候,是不是需要部署到远程SSH服务器运行呢,当然也可以直接在idea软件内容实现配置部署操作,接下来通过本文给大家分享利用Intellij Idea连接远程服务器实现远程上传部署功能,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • 详解Java在redis中进行对象的缓存

    详解Java在redis中进行对象的缓存

    这篇文章主要介绍了Java在redis中进行对象的缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • IDEA自定义Maven archetype的方法步骤

    IDEA自定义Maven archetype的方法步骤

    在创建Maven的项目时我们发现了一个很不方便的问题,就是每次创建Maven的工程的时候,都需要选择一个骨架,本文主要介绍了IDEA自定义Maven archetype的方法步骤,感兴趣的可以了解一下
    2022-03-03
  • 浅谈Mybatis通用Mapper使用方法

    浅谈Mybatis通用Mapper使用方法

    本篇文章主要介绍了浅谈Mybatis通用Mapper使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java的validation参数校验代码实例

    Java的validation参数校验代码实例

    这篇文章主要介绍了Java的validation参数校验代码实例,Validation参数校验是指在程序运行中对传进来的参数进行合法性检查,以保证程序的正确性和安全性,需要的朋友可以参考下
    2023-10-10
  • 详细了解java监听器和过滤器

    详细了解java监听器和过滤器

    下面小编就为大家带来一篇基于java servlet过滤器和监听器(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07

最新评论