如果我按如下所示创建我的httpBuilder(假设设置了proxyUsername,那么调用setCredentials),则通过代理路由对正确传入的httpAddress-es的调用。但是,应用程序有一些在本地网络内的http调用。可以使用http.nonProxyHosts来解决这个问题并绕过代理吗?如果是这样,怎么样?使用System.setProperty?或者是HttpBuilder上的东西?
HTTPBuilder httpBuilder = new HTTPBuilder(httpAddress)
httpBuilder.setProxy(webProxyHost, webProxyPort, webProxyProtocol)
if (proxyUsername) {
httpBuilder.client.getCredentialsProvider().setCredentials(
new AuthScope(webProxyHost, webProxyPort),
new UsernamePasswordCredentials(proxyUsername, proxyPassword))
}
}
在上面的代码中,所有各种命名元素(webProxyHost等)都声明为String并相应地设置。
答案 0 :(得分:0)
在回答上述评论中的问题时,我们的主要'nonProxyHost'需要的是'localhost',默认情况下是这样。因此,这不再是一个问题。没有真正找到如何实现这一点,因为它在HttpClient上有点版本特定。
您可以设置系统属性:
System.setProperty('http.nonProxyHosts', myNonProxyHosts)
但是,如果你在HttpBuilder上调用'setProxy',即使你调用'useSystemProperties'也不会。这是他们的文档,只是不明显!
最后,您可以致电:
httpBuilder.client.params.setParameter('http.nonProxyHosts', myNonProxyHosts)
但我不确定这是否是属性名称,很难找到这些属性的文档。更糟糕的是 - 那些'params'已被弃用 - 你应该使用更好的'config'类,尽管再次找到关于所有参数的综合文档并不是最简单的!希望我能得到更多的帮助!