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+Appium实现屏幕录制功能

    Java+Appium实现屏幕录制功能

    这篇文章主要介绍了Java如何利用Appium实现屏幕录制功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Java Web Fragment在项目中使用方法详解

    Java Web Fragment在项目中使用方法详解

    这篇文章主要介绍了Web Fragment在项目中使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • SpringBoot @Autowired注解注入规则介绍

    SpringBoot @Autowired注解注入规则介绍

    这篇文章主要介绍了SpringBoot @Autowired注解注入规则介绍,具有很好的参考价值,希望对大家有所帮助。
    2021-11-11
  • Java 控制线程的方法

    Java 控制线程的方法

    这篇文章主要介绍了Java 控制线程的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java与MySQL导致的时间不一致问题分析

    Java与MySQL导致的时间不一致问题分析

    在使用MySQL的过程中,你可能会遇到时区相关问题,本文主要介绍了Java与MySQL导致的时间不一致问题分析,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java连接数据库JDBC技术之prepareStatement的详细介绍

    Java连接数据库JDBC技术之prepareStatement的详细介绍

    这篇文章主要介绍了Java连接数据库JDBC技术之prepareStatement的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Spring MVC常用客户端参数接收方式详解

    Spring MVC常用客户端参数接收方式详解

    这篇文章主要介绍了Spring MVC常用客户端参数接收方式详解,文章主要介绍了几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Spring Security OAuth2 授权码模式的实现

    Spring Security OAuth2 授权码模式的实现

    这篇文章主要介绍了Spring Security OAuth2 授权码模式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 详解如何在Spring中为@Value注解设置默认值

    详解如何在Spring中为@Value注解设置默认值

    在Spring开发中,我们经常会遇到需要从配置文件中读取属性的情况,@Value注解是Spring提供的一种便捷方式,能够让我们轻松地将配置文件中的属性注入到Spring Bean中,
    2024-10-10
  • Java 超详细讲解十大排序算法面试无忧

    Java 超详细讲解十大排序算法面试无忧

    这篇文章主要介绍了Java常用的排序算法及代码实现,在Java开发中,对排序的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力。那Java有哪些排序算法呢?本文小编就来详细说说Java常见的排序算法,需要的朋友可以参考一下
    2022-04-04

最新评论