如何在 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 请求。
我有一个 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 请求。