【发布时间】:2013-02-25 23:53:27
【问题描述】:
我已经开发了一些我希望你在我的 grails 应用程序中使用的 Web 服务。 可以使用 Get 或 POST 协议调用这些服务。
我已经看到我需要使用 HTTP builder 对象来执行此操作。
这是我的代码:
import groovyx.net.http.HTTPBuilder
import groovyx.net.http.ContentType
import groovyx.net.http.Method
import groovyx.net.http.RESTClient
import groovyx.net.http.HttpResponseDecorator
def http = new HTTPBuilder( 'http://localhost:8086' )
http.request( GET, JSON ) {
uri.path = '/RegistrationService/webresources/users/isRegistered'
uri.query = [ login:'aa', password: 'bb' ]
response.success = { resp, xml ->
def xmlResult = xml
}
}
我遇到的问题是,在 Netbeans 中,每次导入都有一个错误: 无法解析类 groovyx.net.http.HTTPBuilder 无法解析类 groovyx.net.http.ContentType ...
但是我尝试运行应用程序,这是我运行代码时的错误:
| Error 2013-02-25 23:33:32,596 [http-bio-8080-exec-3] ERROR errors.GrailsExceptionResolver - MissingPropertyException occurred when processing request: [POST] /WordGame/user/authenticate
No such property: uriPath for class: groovyx.net.http.HTTPBuilder$RequestConfigDelegate. Stacktrace follows:
Message: No such property: uriPath for class: groovyx.net.http.HTTPBuilder$RequestConfigDelegate
Line | Method
->> 21 | doCall in wordgame.UserController$_closure2_closure4
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 425 | doRequest in groovyx.net.http.HTTPBuilder
| 359 | request . in ''
| 19 | doCall in wordgame.UserController$_closure2
| 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 603 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run . . . in java.lang.Thread
我已经使用以下命令安装了其余插件:grails install-plugin rest 而且我已经尝试使用 netbeans 界面安装它,它告诉我它已正确安装。
我在一些论坛上看到我需要在 BuildConfig.groovy 文件中有这样的依赖项:
dependencies {
runtime('org.codehaus.groovy.modules.http-builder:http-builder:0.5.1') {
excludes 'xalan'
excludes 'xml-apis'
excludes 'groovy'
}
}
但这并不能解决问题。
有关信息,我使用的是 netbeans 7.2.1 和 Grails 2.2.0。
我的代码有问题还是有更简单的方法来请求 Web 服务?
提前致谢。
【问题讨论】:
-
您在安装插件后尝试过
grails refresh-dependencies和grails clean吗?我曾经自己尝试过,在我安装rest插件后一切都启动并运行(顺便说一句。在BuildConfig.groovy文件中声明插件而不是通过命令行安装它们并拥有插件是一种“更好”的做法)依赖项写入application.properties文件:) )。 -
我尝试执行 grails refresh-dependencies 和 grails clean 但错误仍然存在。我没有在 BuildConfig.groovy 中声明插件,因为我是 Grails 的新手,我不知道该怎么做。
-
这些天你不应该使用
grails install-plugin,而是应该在plugins的BuildConfig.groovy部分添加一个依赖项(compile ":rest:0.7")
标签: web-services grails post request httpbuilder