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

sep*_*ber 3 java web-services spring-ws

我有一个SOAP Web服务端点URL(比如说:“ EP1”),我们只能通过代理服务器进行连接。

我们正在使用org.springframework.ws.client.core.WebServiceTemplate类使用Web服务。

我的问题是,有没有一种方法可以传递/设置WebServiceTemplate上的代理服务器详细信息以连接到端点URL“ EP1”?

Boh*_*rdt 6

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

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 ...
Run Code Online (Sandbox Code Playgroud)

您可能需要在WebServiceTemplate对象上或HttpClient根据需要设置其他属性,依此类推。但这应该证明基本概念。

还请看一下该示例该示例说明了Apache HTTP客户端中代理的用法。


dmo*_*tta 3

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

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