HTTP Proxy configuration

如果您在代理后面,并且需要为 HTTP 出站适配器或网关配置代理设置,则可以应用两种方法之一。在大多数情况下,您可以依赖于控制代理设置的标准 Java 系统属性。否则,您可以显式配置用于 HTTP 客户机请求工厂实例的 Spring bean。

If you are behind a proxy and need to configure proxy settings for HTTP outbound adapters or gateways, you can apply one of two approaches. In most cases, you can rely on the standard Java system properties that control the proxy settings. Otherwise, you can explicitly configure a Spring bean for the HTTP client request factory instance.

Standard Java Proxy configuration

您可以设置三个系统属性来配置 HTTP 协议处理程序使用的代理设置:

You can set three system properties to configure the proxy settings that are used by the HTTP protocol handler:

  • http.proxyHost: The host name of the proxy server.

  • http.proxyPort: The port number (the default is 80).

  • http.nonProxyHosts: A list of hosts that should be reached directly, bypassing the proxy. This is a list of patterns separated by |. The patterns may start or end with a * for wildcards. Any host that matches one of these patterns is reached through a direct connection instead of through a proxy.

对于 HTTPS,可以使用以下属性:

For HTTPS, the following properties are available:

  • https.proxyHost: The host name of the proxy server.

  • https.proxyPort: The port number, the default value being 80.

有关更多信息,请参阅 [role="bare"][role="bare"]https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html

Spring’s SimpleClientHttpRequestFactory

如果您需要对代理配置进行更明确的控制,则可以使用 Spring 的 SimpleClientHttpRequestFactory 并配置其 proxy 属性,如下例所示:

If you need more explicit control over the proxy configuration, you can use Spring’s SimpleClientHttpRequestFactory and configure its 'proxy' property, as the following example shows:

<bean id="requestFactory"
    class="org.springframework.http.client.SimpleClientHttpRequestFactory">
    <property name="proxy">
        <bean id="proxy" class="java.net.Proxy">
            <constructor-arg>
                <util:constant static-field="java.net.Proxy.Type.HTTP"/>
            </constructor-arg>
            <constructor-arg>
                <bean class="java.net.InetSocketAddress">
                    <constructor-arg value="123.0.0.1"/>
                    <constructor-arg value="8080"/>
                </bean>
            </constructor-arg>
        </bean>
    </property>
</bean>