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调用的实现需要了解代理。