groovy 带有代理(和授权)的 httpBuilder

groovy httpBuilder with proxy (and auth)

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

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

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

我有 运行 在我的开发机器上没问题,它使用另一个网络,不需要代理。 当我将它部署到预生产测试环境时,我得到一个 "connection refused" 异常。

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

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

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

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

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