feign返回中文乱码的问题(feign返回结果统一处理)
最近改造项目集成到微服务体系中,使用openfeign遇到feign请求其他的服务返回的数据中文乱码的问题;本人采用以下的方式解决;
由于历史的项目,涉及的代码比较多,feign默认的请求方式是httpClient,感觉应该是哪里配置的相关httpClient设置;通过修改feign的请求方式为okhttp;
方法如下:
1:导入依赖
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
2:配置增加
#禁用httpclient方式
feign.httpclient.enabled = false
#启用okhttp方式
feign.okhttp.enabled=true
feign.hystrix.enabled = false
feign.compression.request.enabled = true
feign.compression.response.enabled = true
3:增加配置类
@Configuration
@ConditionalOnClass(Feign.class)
@AutoConfigureBefore(FeignAutoConfiguration.class)
public class FeignOkHttpConfig {
@Bean
public okhttp3.OkHttpClient okHttpClient(){
return new okhttp3.OkHttpClient.Builder()
//设置连接超时
.connectTimeout(60, TimeUnit.SECONDS)
//设置读超时
.readTimeout(60, TimeUnit.SECONDS)
//设置写超时
.writeTimeout(120,TimeUnit.SECONDS)
//是否自动重连
.retryOnConnectionFailure(false)
.connectionPool(new ConnectionPool())
// .addInterceptor(new OkHttpLogInterceptor())
//构建OkHttpClient对象
.build();
}
/**
* 解决okhttp 不支持springmvc 注解的问题
* @return
*/
@Bean
public Contract feignConfiguration() {
return new SpringMvcContract();
}
}