2010-11-13 68 views
4

我們有一個調用第三方web服務的webservice。爲了測試這個實現,我們有不同的環境。407無法通過代理隧道

  • 當地開發商機:當我們運行應用程序,一切工作正常,我們的web服務能夠打到第三方URL。 (本地計算機使用Windows OS)

  • 本地開發服務器:部署開發服務器上的應用程序之後,我們是不是能夠訪問第三方URL,並得到HTTP代理407錯誤。 (我們有Linux的,與IBM J9 JVM。)

爲了解決這個問題,我們嘗試設置-Dhttps.proxyUser XXX -Dhttps.proxyPassword XXX,但我們仍然得到錯誤。我們嘗試的第二個選項是使用Authenticator.setDefault(new CustomImplAuthenticator())。但令人驚訝的是,JVM沒有調用getPasswordAuthentication並繼續拋出錯誤。

我們在本地開發人員機器上用authenticator.setdefault代碼再次運行相同的應用程序。我們可以像前面說的那樣訪問URL,但這次又是JVM沒有調用getPasswordAuthentication方法。通過網絡搜索後,我們發現通過NTLM驗證數據得到了解決,因此我們認爲代碼在Windows上工作。

任何人都可以讓我知道什麼設置,我們應該在部署在Linux機器上的應用程序上配置,以便至少調用指定爲Authenticator.setDefault的實現。

回答

1

這取決於你如何建立你的http連接。 如果您使用Apache HTTPClient,則可以通過調用setProxyAuthenticationHandler將代理配置設置到DefaultHttpClient中。

執行http調用的實現需要了解代理。