我们有一个调用第三方Web服务的Web服务。为了测试这个实现,我们有不同的环境。
本地开发人员计算机:当我们运行应用程序时,一切正常,我们的网络服务就可以点击第三方网址。 (本地计算机使用Windows操作系统)
本地开发服务器:在开发服务器上部署应用程序后,我们无法访问第三方URL并收到Http Proxy 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
分配的实现。
答案 0 :(得分:1)
这取决于您建立http连接的方式。 例如,如果您使用Apache HTTPClient,则可以通过调用setProxyAuthenticationHandler将代理配置设置为DefaultHttpClient。
执行http调用的实现需要了解代理。