0

我已经使用WSConsume从 WSDL 文件生成了 Web Serice 客户端存根。然后在客户端代码中使用生成的存根将数据发送到 Web 服务。

这一切都很好。即客户端能够与网络服务通信并交换数据和一切。

一旦客户端部署在代理后面,我的问题就开始了。我也已经解决了大部分问题。我们所做的是在客户端启动时设置以下 JVM 属性。

http.proxyHost、http.proxyPort、https.proxyHost 和 https.proxyPort

我知道不建议这样做,我们将及时转移到 ProxySelector。但是现在只要代理不需要身份验证,这对我们有用。

为了解决身份验证问题,我确实覆盖了默认值PasswordAuthentication

Authenticator.setDefault(new Authenticator() {
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(httpsProxyUser, httpsProxyPassword.toCharArray());
    }
});

在大多数情况下,这也很有效。我知道这就是通常所说的 NTLM 身份验证。

当代理需要基本身份验证时,我的噩梦就开始了。据我目前所了解的是,要使此身份验证机制起作用,我们需要Proxy-Authorization在请求属性中设置标头。如果我可以访问 HTTP 客户端对象,这又可以轻松完成。

但是在使用通过 wsconsume 生成的 Stub 时如何做到这一点?

4

1 回答 1

0

一种方法是使用以下 JVM 选项。这个对我有用。

-Dhttp.auth.preference="基本"

于 2013-07-02T14:04:11.723 回答