具有代理(和auth)的groovy httpBuilder

时间:2015-03-11 17:50:29

标签: groovy proxy httpbuilder

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

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

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

我在我的开发机器上运行正常,它使用另一个网络而不需要代理。 当我将它部署到pre-prod测试环境时,我得到一个“连接被拒绝”的例外。

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

1 个答案:

答案 0 :(得分:1)

很高兴地说我找到了这个问题并自己解决了。觉得在这里分享也是个好主意。

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

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

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