2015-07-21 68 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'類,儘管再次找到所有參數的全面文檔並不是最簡單的!希望我能有更多的幫助!