Groovy:向URL发送请求,忽略结果

时间:2011-09-13 03:55:14

标签: java groovy

在groovy中,有没有办法向URL发送请求,忽略响应?主要目的是在更短的时间内向服务器发送更多请求。

由于结果对我来说并不重要,一旦发送请求,我不希望脚本在继续之前等待响应。

这是我目前的剧本:

(1..50).each { element->
  def url = "http://someUrl"
  url.toURL().text 
} 

在此代码中,text方法必须加载整个响应,我并不真正关心。重要的是发送请求,等待响应并不重要。

是否有类似的send方法? (沿着...的路线。

url.toURL().send

或者,是否有“groovy”方式我可以使用GPARS并行运行循环来加速这个过程?

1 个答案:

答案 0 :(得分:6)

只需发送网址,您就可以使用withInputStreamwithReader方法发送请求,而无需阅读文字。这将只创建一个处理程序来读取将立即关闭的传入文本。

对于GPars,您可以使用withPoolcallAysnc的组合来创建线程池以同时执行请求。例如:

@Grab(group='org.codehaus.gpars', module='gpars', version='0.12')
import static groovyx.gpars.GParsExecutorsPool.withPool

withPool(50) {
    50.times {
        Closure callUrl = {"http://google.com".toURL().withReader {}}
        callUrl.callAsync();
    }
}

但是,如果您不关心线程数,则可以创建自己的线程而不使用GPars。例如:

50.times { 
    Closure callUrl = {"http://google.com".toURL().withReader {}}
    Thread.start callUrl
}