Использование NonProxyHosts с Groovy 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 и заданы соответствующим образом.


person JoeG    schedule 21.07.2015    source источник
comment
Здравствуйте, у меня похожая ситуация, вы нашли способ сделать это?   -  person Akshay Machhindra Mankar    schedule 14.07.2016


Ответы (1)


В ответ на вопрос в приведенном выше комментарии наша основная потребность в «nonProxyHost» заключалась в «localhost», который присутствует по умолчанию. Таким образом, это перестало быть проблемой. На самом деле никогда не узнавал, как это сделать, поскольку это несколько зависит от версии HttpClient.

Вы можете установить свойство System:

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

Однако, если вы вызываете setProxy для HttpBuilder, даже если вы вызываете useSystemProperties, этого не произойдет. Это есть в их документации, просто не очевидно!

Наконец, вы можете позвонить:

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

Но я не знаю точно, является ли это именем свойства, и документацию по этим свойствам трудно найти. Хуже того, эти «параметры» устарели — вы должны использовать лучшие классы «конфигурации», хотя, опять же, найти исчерпывающую документацию по всем параметрам для этого не так просто! Хотел бы я быть более полезным!

person JoeG    schedule 18.07.2016