【问题标题】:How can I support an HTTP Proxy using Spring 5 WebClient?如何使用 Spring 5 WebClient 支持 HTTP 代理?
【发布时间】:2018-04-09 08:25:16
【问题描述】:

我正在使用 Spring 5 WebClient。我想知道是否可以将其配置为使用 HTTP 代理,或者是否有办法更改其默认配置。

【问题讨论】:

    标签: spring-webflux


    【解决方案1】:

    这是底层客户端库应该支持的东西。

    使用 Reactor Netty 时,您可以执行以下操作:

    HttpClient httpClient = HttpClient.create()
                .tcpConfiguration(tcpClient ->
                        tcpClient.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host("myproxyhost")));
    ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
    WebClient client = WebClient.builder().clientConnector(connector).build();
    

    【讨论】:

    • 任何关于如何使用 WebTestClient 执行此操作的示例?
    • 我猜 WebTestClient 是为了在模拟/集成设置中测试您的应用程序,而不是在代理后面部署的外部服务。
    • 是的...我很懒惰。这是一个示例... ReactorClientHttpConnector connector = new ReactorClientHttpConnector(options -> options.httpProxy(addressSpec -> { return addressSpec.host(proxyHost).port(proxyPort); })); WebTestClient 客户端 = WebTestClient .bindToServer(connector).baseUrl(hostname) .build();
    • 感谢您的回答。在我尝试在运行我的应用程序之前设置 JVM 标志(-DproxySet = true -DproxyHost = 127.0.0.1 -DproxyPort = 9999)但它不起作用。你知道为什么它不能以这种方式与 WebClient 一起工作吗?
    • 一个补充:在host("myproxyhost")之后如果你有端口号别忘了放。否则它不起作用。 host("myproxyhost").port(portnumber).
    【解决方案2】:

    “tcpConfiguration”已弃用。 所以改用这部分代码。

      HttpClient httpClient =
                HttpClient.create()
                        .proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP)
                                .host(sasConfig.getProxyHost())
                                .port(Integer.parseInt(sasConfig.getProxyPort())));
    
        ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
    
        WebClient webClient =  WebClient.builder().clientConnector(connector).build();
    

    【讨论】:

    • 我也用过,但它抛出异常failure when writing TLS control frames; nested exception is javax.net.ssl.SSLException: failure when writing TLS control frames我该如何解决这个问题?
    • 这对我有用。 :thumbs_up:
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 2017-04-25
    • 2022-01-15
    • 2019-04-15
    • 2018-01-07
    • 2021-01-19
    • 2018-02-19
    • 2019-09-17
    相关资源
    最近更新 更多