我创建了一个 groovlet,它将充当一种 HTTP 代理。它接受 GET 请求,然后根据请求中提供的 URL 进行 Web 服务调用。
这是我到目前为止的代码:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0')
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
String url = params.url
def http = new HTTPBuilder(url)
http.request(GET, TEXT) {
response.success = { resp, reader ->
println reader
}
response.'404' = { resp ->
println 'not found!'
}
}
我在 groovlet 的文件夹中有Groovy HTTPBuilder JAR 文件WEB-INF/lib
。但是,代码无法正常工作。(我也尝试将文件夹放入$TOMCAT_HOME/common/lib
其中,结果与以下相同。)
当我完全按照上面的方式运行代码时,页面完全空白。
如果我只删除@Grab
顶部的行(因为理论上 JAR 应该已经在类路径中),我会从 Tomcat 收到一个令人讨厌的错误(我在 5.5 上运行它,但在 6 上我得到大致相同的行为):
HTTP 状态 500 - GroovyServlet 错误:脚本:'/proxy.groovy':脚本处理失败。启动失败:语义分析期间的一般错误:类型 org.apache.http.client.methods.HttpRequestBase 不存在 java.lang.TypeNotPresentException:类型org.apache.http.client.methods.HttpRequestBase 不存在...
然后是堆栈跟踪。
我的 groovlet 有什么问题?