如何在 WebServiceTemplate 上设置代理服务器详细信息

how to set proxy server details on WebServiceTemplate

我有一个 SOAP 网络服务端点 url(比方说:"EP1"),我们可以通过代理服务器连接它。

我们正在使用 org.springframework.ws.client.core.WebServiceTemplate class 来使用网络服务。

我的问题是,有没有一种方法可以 pass/set WebServiceTemplate 上的代理服务器详细信息以连接到端点 url "EP1"?

您可以在构建 WebServiceTemplate 时通过 HttpComponentsMessageSender 指定自定义 HttpClient。然后,您可以将包含代理的默认请求配置传递给客户端。这样的事情应该有效:

RequestConfig config = RequestConfig
        .custom()
        .setProxy(new HttpHost("host"))
        .build();

CloseableHttpClient client = HttpClients
        .custom()
        .setDefaultRequestConfig(config)
        .build();

HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender(client);

WebServiceTemplate wsTemplate = new WebServiceTemplate();
wsTemplate.setMessageSender(messageSender);
// Set other required properties ...

您可能需要根据需要在 WebServiceTemplate 对象或 HttpClient 上设置其他属性等等。但这应该展示基本概念。

另请参阅 this sample 说明代理在 Apache HTTP 客户端中的用法。

您必须使用 VM 参数:-Dhttp.proxyHost=mydomain.com -Dhttp.proxyPort=8080

请记住,此设置适用于从 Java 发出的所有 HTTP 请求。