我使用WSConsume从WSDL文件生成了Web Serice客户端存根。然后,在客户端代码中使用生成的存根将数据发送到Web服务。
一切正常。即客户端能够与Web服务进行通信并交换数据和所有内容。
客户端部署在代理服务器后,我的问题就开始了。我也完成了大部分内容。我们所做的是在客户端启动时设置以下JVM属性。
http.proxyHost,http.proxyPort,https.proxyHost和https.proxyPort
我知道这不是建议的,我们将及时迁移到ProxySelector。但是现在只要Proxy不需要身份验证,这对我们有用。
要解决身份验证问题,我确实覆盖了默认的PasswordAuthentication
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(httpsProxyUser, httpsProxyPassword.toCharArray());
}
});
大多数情况下这也很有效。我知道这就是通常所说的NTLM身份验证。
当代理期待基本身份验证时,我的梦魇就开始了。从我到目前为止所理解的是,为了使这种认证机制起作用,我们需要在请求属性中设置Proxy-Authorization
标头。如果我有权访问HTTP客户端对象,这又可以轻松完成。
但是当使用通过wsconsume生成的Stub时如何做到这一点?
答案 0 :(得分:0)
执行此操作的一种方法是使用以下JVM选项。这个对我有用。
-Dhttp.auth.preference = “基本”