首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >企业代理春云假象/丝带

企业代理春云假象/丝带
EN

Stack Overflow用户
提问于 2017-05-09 06:28:33
回答 3查看 5.2K关注 0票数 3

我想通过身份验证从外部世界在企业代理后面使用REST服务。

我如何配置Spring + Spring假象/条带来使用我们的代理?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-29 15:05:42

我相信你是在找这样的东西:

代码语言:javascript
复制
import feign.Feign;
import okhttp3.OkHttpClient;
import java.net.InetSocketAddress;
import java.net.Proxy;
...
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy-url", 1234));
OkHttpClient okHttpClient = new OkHttpClient.Builder().proxy(proxy).build();
Feign.builder()
    .client(new feign.okhttp.OkHttpClient(okHttpClient))
    .target(...);

您只需将compile 'io.github.openfeign:feign-okhttp:9.5.0'添加到项目中即可。

target子句包含您定义的接口。进一步参考:https://github.com/OpenFeign/feign

票数 8
EN

Stack Overflow用户

发布于 2020-10-01 17:32:53

事实上,有一个更简单的解决方案。

以下信息将有帮助(也适用于更高级的用例):

OpenFeign客户机可以与多个HTTP一起运行。默认情况下,它使用java.net.URLConnection,但也可以使用ApacheHttpClientOkHttpClient

使用Apache Http客户端

下面是使用ApacheHttpClient设置代理可以做的事情

  1. 将以下两个依赖项添加到pom.xml中:
代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Dependency to switch HttpClient implementation from java.net.URLConnection to Apache HTTP Client -->
<!-- See also: FeignAutoConfiguration for details. -->
<!-- See also: https://cloud.spring.io/spring-cloud-commons/reference/html/#http-clients -->
<!-- See also: https://cloud.spring.io/spring-cloud-openfeign/reference/html/#spring-cloud-feign-overriding-defaults -->
<dependency>
  <groupId>io.github.openfeign</groupId>
  <artifactId>feign-httpclient</artifactId>
</dependency>

在您的应用程序中,公开以下bean:

代码语言:javascript
复制
// see: https://cloud.spring.io/spring-cloud-commons/reference/html/#http-clients
@Bean
public HttpClientBuilder proxiedHttpClient() {
  String proxyHost   = "client-envoy";
  Integer proxyPort  = 80
  String proxyScheme = "http";

  return HttpClientBuilder.create()
                          .setProxy(new HttpHost(proxyHost, proxyPort, proxyScheme));
}

仅此而已--在application.yaml中不需要配置其他任何东西,因为默认情况下,如果ApacheHttpClient在类路径上,它将被使用。

使用Ok Http客户端

要使用OkHttpClient设置代理,您可以执行类似的操作:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
  <groupId>io.github.openfeign</groupId>
  <artifactId>feign-okhttp</artifactId>
</dependency>

在您的application.yml中,确保启用OkHttpClient并禁用ApacheHttpClient:

代码语言:javascript
复制
spring:
 cloud:
   httpclientfactories:
     ok:
       enabled: true
     apache:
       enabled: false

feign:
 okhttp:
   enabled: true
 httpclient:
   enabled: false

而不是HttpClientBuilder,而是公开一个类型为OkHttpClient.Builder的bean。

票数 1
EN

Stack Overflow用户

发布于 2021-03-12 01:23:23

Spring云伪装支持三种底层实现:

  1. 默认设置
  2. Apache HttpClient
  3. OkHttpClient

(如果使用默认值:)

创建这个spring (例如通过使用@Configuration注释定义内部类),在应用程序属性/yml中不需要进行任何更改:

代码语言:javascript
复制
  @Bean
  public Client feignClient() {
    return new Client.Proxied(
        null, null, new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)));
  }

如果使用Apache HttpClient:

这意味着feign.httpclient.enabled: trueapplication.yml中,下面的pom.xmlbuild.gradle中有:

代码语言:javascript
复制
pom.xml
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>

build.gradle
implementation 'io.github.openfeign:feign-httpclient'

创建这个spring (比如通过使用@Configuration注释定义内部类):

代码语言:javascript
复制
  @Bean
  public CloseableHttpClient feignClient() {
    return HttpClientBuilder.create().setProxy(new HttpHost(proxyHost, proxyPort)).build();
  }

如果使用OkHttpClient:

这意味着feign.okhttp.enabled: trueapplication.yml中,下面的pom.xmlbuild.gradle中有:

代码语言:javascript
复制
pom.xml
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
</dependency>

build.gradle
implementation 'io.github.openfeign:feign-okhttp'

创建这个spring (比如通过使用@Configuration注释定义内部类):

代码语言:javascript
复制
  @Bean
  public OkHttpClient feignClient() {
    return new OkHttpClient.Builder()
        .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)))
        .build();
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43862594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档