Groovy中缺少HttpBuilder类

Groovy中缺少HttpBuilder类,groovy,httpbuilder,Groovy,Httpbuilder,下面是我尝试做的简单请求,并观察响应 def httpReq=newhttpbuilder(“http://${url}”) 请求(Method.GET,ContentType.JSON){ response.success={resp-> println(“确定”+响应状态toString()) } response.failure={resp-> println(“不正常”+响应状态toString()) } 这将返回一个错误: java.lang.ClassNotFoundExcepti

下面是我尝试做的简单请求,并观察响应

def httpReq=newhttpbuilder(“http://${url}”)
请求(Method.GET,ContentType.JSON){
response.success={resp->
println(“确定”+响应状态toString())
}
response.failure={resp->
println(“不正常”+响应状态toString())
}
这将返回一个错误:

java.lang.ClassNotFoundException:org.apache.commons.collections.iterators.ArrayIterator

我认为jdk.I中定义的ArrayIterator手动添加了
org.apache.commons:commons-collections4:4.4
,但它没有帮助 不要浪费时间收集DEP。使用Gradle之类的构建工具 或者Maven,或者在只需要脚本的情况下使用Groovys Grapes和Groovy 已安装(或可轻松安装)到您的目标上

使用
grape
您必须选择所有可传递的依赖项(这意味着具有正确版本的正确包)。例如,使用
@Grab

@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.1')
import groovyx.net.http.HTTPBuilder

def http = new HTTPBuilder('http://www.google.com')
def html = http.get( path : '/search', query : [q:'Groovy'] )
如果您确实想手动收集所有DEP
grape
也可以 帮助。它可以告诉您需要什么罐子:

%org.codehaus.groovy.modules.http-builder http-builder 0.7.1
$HOME/.groovy/grapes/org.codehaus.groovy.modules.http-builder/http-builder/jars/http-builder-0.7.1.jar
$HOME/.groovy/grapes/org.apache.httpcomponents/httpclient/jars/httpclient-4.2.1.jar
$HOME/.groovy/grapes/org.apache.httpcomponents/httpcore/jars/httpcore-4.2.1.jar
$HOME/.groovy/grapes/commons-logging/commons-logging/jars/commons-logging-1.1.jar
$HOME/.groovy/grapes/commons-codec/commons-codec/jars/commons-codec-1.6.jar
$HOME/.groovy/grapes/net.sf.json-lib/json-lib/jars/json-lib-2.3-jdk15.jar
$HOME/.groovy/grapes/commons beanutils/commons beanutils/jars/commons-beanutils-1.8.0.jar
$HOME/.groovy/grapes/commons-collections/commons-collections/jars/commons-collections-3.2.1.jar
$HOME/.groovy/grapes/commons-lang/commons-lang/jars/commons-lang-2.4.jar
$HOME/.groovy/grapes/net.sf.ezmorp/ezmorp/jars/ezmorp-1.0.6.jar
$HOME/.groovy/grapes/net.sourceforge.nekohtml/nekohtml/jars/nekohtml-1.9.16.jar
$HOME/.groovy/grapes/xerces/xercesImpl/jars/xercesImpl-2.9.1.jar
$HOME/.groovy/grapes/xml-api/xml-api/jars/xml-api-1.3.04.jar
$HOME/.groovy/grapes/xml解析器/xml解析器/jars/xml-resolver-1.2.jar
从这个列表中,您可以构建自己的类路径来传递给groovy和 在没有葡萄的情况下工作。例如:

%cat no-grape.groovy
导入groovyx.net.http.HTTPBuilder
def http=新的HTTPBuilder('http://www.google.com')
def html=http.get(路径:'/search',查询:[q:'Groovy'])
%groovy-cp`grape resolve org.codehaus.groovy.modules.http-builder http-builder http-builder 0.7.1 | paste-s-d:`no-grape.groovy
...
TL;DR 不要浪费时间收集DEP。使用Gradle之类的构建工具 或者Maven,或者在只需要脚本的情况下使用Groovys Grapes和Groovy 已安装(或可轻松安装)到您的目标上

使用
grape
您必须选择所有可传递的依赖项(这意味着具有正确版本的正确包)。例如,使用
@Grab

@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.1')
import groovyx.net.http.HTTPBuilder

def http = new HTTPBuilder('http://www.google.com')
def html = http.get( path : '/search', query : [q:'Groovy'] )
如果您确实想手动收集所有DEP
grape
也可以 帮助。它可以告诉您需要什么罐子:

%org.codehaus.groovy.modules.http-builder http-builder 0.7.1
$HOME/.groovy/grapes/org.codehaus.groovy.modules.http-builder/http-builder/jars/http-builder-0.7.1.jar
$HOME/.groovy/grapes/org.apache.httpcomponents/httpclient/jars/httpclient-4.2.1.jar
$HOME/.groovy/grapes/org.apache.httpcomponents/httpcore/jars/httpcore-4.2.1.jar
$HOME/.groovy/grapes/commons-logging/commons-logging/jars/commons-logging-1.1.jar
$HOME/.groovy/grapes/commons-codec/commons-codec/jars/commons-codec-1.6.jar
$HOME/.groovy/grapes/net.sf.json-lib/json-lib/jars/json-lib-2.3-jdk15.jar
$HOME/.groovy/grapes/commons beanutils/commons beanutils/jars/commons-beanutils-1.8.0.jar
$HOME/.groovy/grapes/commons-collections/commons-collections/jars/commons-collections-3.2.1.jar
$HOME/.groovy/grapes/commons-lang/commons-lang/jars/commons-lang-2.4.jar
$HOME/.groovy/grapes/net.sf.ezmorp/ezmorp/jars/ezmorp-1.0.6.jar
$HOME/.groovy/grapes/net.sourceforge.nekohtml/nekohtml/jars/nekohtml-1.9.16.jar
$HOME/.groovy/grapes/xerces/xercesImpl/jars/xercesImpl-2.9.1.jar
$HOME/.groovy/grapes/xml-api/xml-api/jars/xml-api-1.3.04.jar
$HOME/.groovy/grapes/xml解析器/xml解析器/jars/xml-resolver-1.2.jar
从这个列表中,您可以构建自己的类路径来传递给groovy和 在没有葡萄的情况下工作。例如:

%cat no-grape.groovy
导入groovyx.net.http.HTTPBuilder
def http=新的HTTPBuilder('http://www.google.com')
def html=http.get(路径:'/search',查询:[q:'Groovy'])
%groovy-cp`grape resolve org.codehaus.groovy.modules.http-builder http-builder http-builder 0.7.1 | paste-s-d:`no-grape.groovy
...

谢谢。我尝试使用Groovys Grape,但它无法下载依赖项,抓取Grapes时出错[下载失败:…]在Intellij中,我还安装了groovy,并尝试通过windows cmd启动脚本,如groovy-Dgroovy.grape.report.download=true MyScript.groovy,并且在url repo1.maven.org/maven2/org/codehaus/groovy/modules/http builder/…(java.net.ConnectException:Connection-densed)处出现服务器访问错误。但我可以在浏览器中获取数据。此外,当我创建maven项目并在pom中添加依赖项时,一切都正常。这是否意味着浏览器和maven配置了代理?是的,最有可能是Anks。我尝试使用Groovys Grape,但它无法下载依赖项,错误是抓取Grapes[下载失败:…]在Intellij中,我还安装了groovy,并尝试通过windows cmd启动脚本,如groovy-Dgroovy.grape.report.download=true MyScript.groovy,在url repo1.maven.org/maven2/org/codehaus/groovy/modules/http处出现服务器访问错误