【问题标题】:Configure Feign OkHttpClient to not use proxy on addresses localhost*将 Feign OkHttpClient 配置为不在地址 localhost* 上使用代理
【发布时间】:2018-10-07 05:30:26
【问题描述】:

我在设置 spring-cloud-feign 的代理使用时遇到问题,我正在使用下面的类为 Feign 生成 OkHttpClient:

@Configuration
public class FeignConfigurationProxy {

    @Value ("$ {url.proxy_host}")
    private String HOST_PROXY;
    @Value ("$ {url.proxy_port}")
    private Integer PORT_PROXY;

    private OkHttpClient okHttpClient;
    private Proxy proxy;

    @PostConstruct
    public void init () {
        buildProxy ();
        buildOkHttpClient ();
    }

    @Bean (name = "feign")
    public Feign buildClient () {
        return Feign.builder (). client (new feign.okhttp.OkHttpClient (okHttpClient)).
    }


    @Bean (name = "okhttpclient")
    public OkHttpClient okHttpClient () {
        return okHttpClient;
    }

    public void buildOkHttpClient () {
        buildProxy ();
        okHttpClient = new OkHttpClient.Builder (). proxy (proxy) .build ();
    }

    public void buildProxy () {
        proxy = new Proxy (Proxy.Type.HTTP, new InetSocketAddress (HOST_PROXY, PORT_PROXY));
    }

}

这解决了对我网络外的服务器进行调用的 feign 客户端,但现在我的 localhost 服务器出现问题,我不需要使用代理,当我进行调用时,feign 尝试使用代理并返回给我一个圆锥

【问题讨论】:

  • 为什么不写两个配置,一个用于本地流,另一个用于外部

标签: spring-boot proxy spring-cloud-feign okhttp feign


【解决方案1】:

如果您仍在寻找答案,或者遇到同样问题的人,以下是解决方案:

从配置类中移除“@Configuration”注解,并添加以下 bean:

@Bean
public Client client() {
    return new feign.okhttp.OkHttpClient(okHttpClient);
}

此外,您还需要在“@FeignClient”注释中告知“url”参数。

@FeignClient(name = "my-api", configuration = FeignConfigurationProxy.class, url = "http://my-url:my-port")

这会阻止 Spring 使用功能区。如果确实需要使用功能区和代理,则需要在 bean 中进行调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多