【问题标题】:how to set proxy server details on WebServiceTemplate如何在 WebServiceTemplate 上设置代理服务器详细信息
【发布时间】:2015-11-23 19:42:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: java web-services spring-ws


    【解决方案1】:

    您可以在构造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 客户端中代理的使用。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这不是一个解决方案,可能会导致问题——尤其是当这个 JVM 调用其他服务时
      猜你喜欢
      • 2017-07-16
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多