如果我创建如下所示的httpBuilder (假设设置了proxyUsername,因此调用了setCredentials ),那么对正确传入的httpAddress的调用将通过代理路由。但是,应用程序在本地网络中有一些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等)都被声明为字符串并相应地进行设置。
发布于 2016-07-18 20:10:16
在回答上面评论中的问题时,我们主要的'nonProxyHost‘需求是'localhost’,这是默认情况下存在的。因此,这不再是一个问题。我并没有真正了解如何做到这一点,因为它在HttpClient上是特定于版本的。
您可以设置系统属性:
System.setProperty('http.nonProxyHosts', myNonProxyHosts)但是,如果您在HttpBuilder上调用'setProxy‘,即使您调用'useSystemProperties’,它也不会。这是在他们的文档中,只是不明显!
最后,您可以调用:
httpBuilder.client.params.setParameter('http.nonProxyHosts', myNonProxyHosts)但我不确定这是否是属性名称,而且很难找到这些属性的文档。更糟糕的是-那些'params‘已经被弃用了-你应该使用更好的'config’类,尽管再次找到关于所有参数的全面文档并不是最容易的!希望我能帮上更多的忙!
https://stackoverflow.com/questions/31542079
复制相似问题