首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPBuilder忽略JVM代理参数

HTTPBuilder忽略JVM代理参数
EN

Stack Overflow用户
提问于 2013-06-27 07:01:49
回答 2查看 1.2K关注 0票数 4

我需要通过代理才能到达目标服务器。我似乎可以用这样的代码来完成这个任务:

代码语言:javascript
复制
def http = new HTTPBuilder( 'http://www.somesite.com')
http.setProxy('proxy.com', 8080, 'http')

但不是这样的:

代码语言:javascript
复制
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) (来自这个堆叠溢出问题)。这能在HTTPBuilder中完成吗(我不知道如何引用底层httpclient)?

EN

回答 2

Stack Overflow用户

发布于 2013-06-27 16:42:58

您还可以将代理参数外部化为Config.groovy,然后通过配置设置代理信息。

关于如何外部化配置的一些示例:

http://phatness.com/2010/03/how-to-externalize-your-grails-configuration/ http://www.comitservices.com/wp/?p=133

然后从config获取代理信息。

代码语言:javascript
复制
def SomeService {
  def grailsApplication

  ..
    def http = new HTTPBuilder( 'http://www.somesite.com')
    http.setProxy(
      grailsApplication.config.proxyHost, 
      grailsApplication.config.proxyPort,
      grailsApplication.config.proxyScheme
    )
}
票数 0
EN

Stack Overflow用户

发布于 2013-06-27 13:40:15

AFAIK,在Grails应用程序的上下文中,我们可以为Tomcat本身提供主机和端口,但不能定义HTTP调用在服务器启动期间如何通过代理的行为。

应用程序需要加法代理集代理设置才能通过代理proxy.com连接到somesite.com。例如:

代码语言:javascript
复制
grails add-proxy client --host=proxy.com --port=8080 
       --username=guest --password=guest
grails set-proxy client

它没有经过测试,您也可以跟踪来查看是否可以使用System.setProperty

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17336614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档