2015-07-21 70 views
1

如果我按照如下所示创建了我的httpBuilder(假设proxyUsername已设置,因此setCredentials被调用),那么正确传入httpAddress-es的调用将通过代理进行路由。但是,该应用程序在本地网络中有一些http调用。可以使用http.nonProxyHosts来解决此问题并绕过代理?如果是这样,怎么样?使用System.setProperty?或者在HttpBuilder上的东西?Groovy HttpBuilder的NonProxyHosts用法

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',默认情况下是'localhost'。因此这不再是一个问题。由于它在HttpClient上有些特定版本,所以没有真正知道如何实现这一点。

您可以设置系统属性:

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

但是,如果你打电话HttpBuilder“setProxy”,即使你所说的“useSystemProperties”不会。这是在他们的文档中,只是不明显!

最后,你也许能够拨打:

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

但我不知道,如果是属性名称和这些属性的文件是很难找到的。更糟糕的是,那些'params'已被弃用 - 你应该使用更好的'config'类,尽管再次找到所有参数的全面文档并不是最简单的!希望我能有更多的帮助!