407无法通过代理隧道

问题描述:

我们有一个调用第三方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的实现。

这取决于你如何建立你的http连接。 如果您使用Apache HTTPClient,则可以通过调用setProxyAuthenticationHandler将代理配置设置到DefaultHttpClient中。

执行http调用的实现需要了解代理。