我使用WSConsume從WSDL文件生成了Web Serice客戶端存根控件。生成的存根將用於客戶端代碼以將數據發送到Web服務。從請求基本身份驗證的代理服務器通信到webservice
這一切工作正常。即客戶能夠與網絡服務進行通信並交換數據和一切。
當客戶端部署在代理服務器後面時,我的問題就開始了。我已經將這些內容中的大部分都整理出來了。我們所做的是在客戶端啓動時設置以下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生成的存根時執行此操作?