【问题标题】:groovy httpBuilder with proxy (and auth)带有代理(和身份验证)的 groovy httpBuilder
【发布时间】:2015-03-11 17:50:29
【问题描述】:

我正在尝试使用 httpBuilder 通过代理连接到网络服务,但不知何故无法这样做。 我在这里发现了一个可能有助于解决我的问题(至少是部分问题)的问题:How to use HTTPBuilder behind a proxy with authentication 但是没有给出有效的答案。

我基本上做的是: 创建一个新的 httpBuilder 传递我的 URL 使用 setProxy(host, port, 'http') 方法设置代理 http.request(GET, XML){ 解析 XML 并做一些事情... }

问题 1:我可以将主机指定为主机名还是仅作为 IP 地址?我想是的,但想检查一下。 问题2:如果代理本身需要一些身份验证怎么办?

我让它在我的开发机器上运行正常,它使用另一个网络,不需要代理。 当我将它部署到生产前测试环境时,我收到“连接被拒绝”异常。

编辑:我正在将整个东西部署到一个 tomcat 6.39 服务器

【问题讨论】:

  • 编辑了原版。指定部署服务器类型和版本的问题

标签: groovy proxy httpbuilder


【解决方案1】:

很高兴我发现问题并自行解决。觉得在这里也分享一下也是个好主意。

关键是,在之前的设置代理尝试中,我编辑了 setenv.sh 脚本,用于 tomcat 启动设置 JAVA_OPTS 以使用代理(-Dhttp.proxyHost、proxyPort 等)。这没有帮助,因此我转向了在代码中动态设置代理的方法(依靠外部属性文件来存储配置。只是为了避免在源代码中硬编码它们)。

显然这两件事一起搞砸了最终的代理配置!我删除了 -Dhttp.proxyHost 和其他相关的 JAVA_OPTS,它开始使用 httpBuilder 开箱即用。

经验教训(艰难的方式):不要指望在 tomcat 中运行的 web 应用程序会从系统或环境变量中获取代理设置。最好在运行时在代码中设置它(仅用于需要代理的调用)并将代理主机和端口外部化到常规属性文件,这样您就不必每次代理更改 url 或端口时重新编译源

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多