使用Groovy HttpBuilder进行NonProxyHosts

时间:2015-07-21 14:34:50

标签: groovy httpclient httpbuilder

如果我按如下所示创建我的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并相应地设置。

1 个答案:

答案 0 :(得分:0)

在回答上述评论中的问题时,我们的主要'nonProxyHost'需要的是'localhost',默认情况下是这样。因此,这不再是一个问题。没有真正找到如何实现这一点,因为它在HttpClient上有点版本特定。

您可以设置系统属性:

System.setProperty('http.nonProxyHosts', myNonProxyHosts)

但是,如果你在HttpBuilder上调用'setProxy',即使你调用'useSystemProperties'也不会。这是他们的文档,只是不明显!

最后,您可以致电:

httpBuilder.client.params.setParameter('http.nonProxyHosts', myNonProxyHosts)

但我不确定这是否是属性名称,很难找到这些属性的文档。更糟糕的是 - 那些'params'已被弃用 - 你应该使用更好的'config'类,尽管再次找到关于所有参数的综合文档并不是最简单的!希望我能得到更多的帮助!