我需要通过代理来访问我的目标服务器。似乎我可以使用这样的代码来完成它:
def http = new HTTPBuilder( 'http://www.somesite.com')
http.setProxy('proxy.com', 8080, 'http')
但不是这样的:
System.setProperty("http.proxyHost", "proxy.com");
System.setProperty("http.proxyPort", "8080");
def http = new HTTPBuilder( 'http://www.somesite.com')
不应该这样吗?
真正的问题是我在Grails应用程序中使用HTTPBuilder
并且期望使用-Dhttp.proxyHost
和-Dhttp.proxyPort
启动Tomcat会让HTTPBuilder
通过代理...但是HTTPBuilder
忽略了那些JVM参数。
看起来httpclient
可以配置为使用这样的JVM参数:client.getHostConfiguration().setProxy(host, port)
(来自this stackoverflow question)。这可以在HTTPBuilder
中完成(我不知道如何引用底层httpclient
)?
答案 0 :(得分:0)
您还可以将代理参数外部化为Config.groovy,然后通过配置设置代理信息。
如何外部化配置的一些示例:
http://phatness.com/2010/03/how-to-externalize-your-grails-configuration/ http://www.comitservices.com/wp/?p=133
然后从配置
中获取代理信息def SomeService {
def grailsApplication
..
def http = new HTTPBuilder( 'http://www.somesite.com')
http.setProxy(
grailsApplication.config.proxyHost,
grailsApplication.config.proxyPort,
grailsApplication.config.proxyScheme
)
}
答案 1 :(得分:-1)