【问题标题】:NonProxyHosts usage with Groovy HttpBuilderNonProxyHosts 与 Groovy HttpBuilder 的使用
【发布时间】:2015-10-11 02:03:31
【问题描述】:

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

【问题讨论】:

  • 您好,我也有类似的情况,请问您找到解决方法了吗?

标签: groovy httpclient httpbuilder


【解决方案1】:

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

您可以设置系统属性:

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

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

最后,你或许可以调用:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多