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实现简单的RPC框架的示例代码

    Java实现简单的RPC框架的示例代码

    本篇文章主要介绍了Java实现简单的RPC框架的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Spring Boot 整合 Apache Dubbo的示例代码

    Spring Boot 整合 Apache Dubbo的示例代码

    Apache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,这篇文章主要介绍了Spring Boot 整合 Apache Dubbo的方法,本文通过示例说明给大家讲解的非常详细,需要的朋友可以参考下
    2021-07-07
  • Java通过接口实现匿名类的实例代码

    Java通过接口实现匿名类的实例代码

    这篇文章介绍了Java通过接口实现匿名类的实例代码,有需要的朋友可以参考一下
    2013-10-10
  • Json字符串内容比较超实用教程

    Json字符串内容比较超实用教程

    这篇文章主要介绍了Json字符串内容比较-超实用版,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 基于spring-mvc.xml和application-context.xml的配置与深入理解

    基于spring-mvc.xml和application-context.xml的配置与深入理解

    这篇文章主要介绍了spring-mvc.xml和application-context.xml的配置与深入解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot注入配置文件的3种方法详解

    SpringBoot注入配置文件的3种方法详解

    这篇文章主要介绍了SpringBoot注入配置文件的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 浅谈Java序列化和反序列化为何要实现Serializable接口

    浅谈Java序列化和反序列化为何要实现Serializable接口

    这篇文章主要介绍了浅谈Java序列化和反序列化为何要实现Serializable接口,序列化最重要的作用是在传递和保存对象时.保证对象的完整性和可传递性,对象转换为有序字节流,以便在网络上传输或者保存在本地文件中,需要的朋友可以参考下
    2023-12-12
  • 一文带你认识Java中的Object类和深浅拷贝

    一文带你认识Java中的Object类和深浅拷贝

    任何变成语言中,其实都有浅拷贝和深拷贝的概念,Java 中也不例外,下面这篇文章主要给大家介绍了关于Java中Object类和深浅拷贝的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • java解析XML详解

    java解析XML详解

    这篇文章主要介绍了XML解析四种方式代码示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-07-07
  • Java Socket使用加密协议进行传输对象的方法

    Java Socket使用加密协议进行传输对象的方法

    这篇文章主要介绍了Java Socket使用加密协议进行传输对象的方法,结合实例形式分析了java socket加密协议相关接口与类的调用方法,以及服务器、客户端实现技巧,需要的朋友可以参考下
    2017-06-06

最新评论