我在设置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));
}
}这解决了对网络外的服务器进行调用的伪装客户端,但现在我遇到了本地主机服务器的问题,在本地主机服务器上,我不需要使用代理,当我进行调用时,伪装尝试使用代理并返回给我一个锥体
发布于 2018-12-17 08:42:34
如果你还在寻找答案,或者正在面临同样问题的人,这里是解决方案:
从您的config类中删除"@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使用ribbon。如果您确实需要使用ribbon和代理,则需要在bean中对其进行调整。
https://stackoverflow.com/questions/50044278
复制相似问题