-1

我第一次使用 grails 开发一个安静的 web 服务,我按照 grails 文档中的第 13 章设置对 GET 请求的简单响应。

我没有得到的是设置 HTTPBuilder 来创建一个发出 get 请求的客户端。我已经下载了jar httpbuilder,Restful客户端定义如下

import groovyx.net.http.*
import static groovyx.net.http.ContentType.JSON

def http = new HTTPBuilder("http://localhost:8080/amazon")

http.request(Method.GET, JSON) { url.path = '/book/list' response.success = { resp, json -> for (book in json.books) { println book.title } } }

那么他们为客户端定制的代码是定义了一个新的 HTTPBuilder 类吗?如果是,我们需要在哪里定义这个类

现在,在我的控制器中显示 def 的 URL 路由没有发生。

谢谢

4

1 回答 1

3

我不确定您到底要做什么,因为我不知道您的 localhost 服务应该返回什么。由于您正在寻找书籍,因此这里有一个使用 Google 图书搜索的示例,可能会有所帮助。我这样写是为了让您可以根据需要在 Groovy 控制台中运行,但也可以在 grails 中运行。

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.2' )

import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.JSON
import static groovyx.net.http.Method.GET

def http = new HTTPBuilder("https://www.googleapis.com")

http.handler.failure = { resp, json ->
    println "it broke ${resp} ${json}"
}
http.get(path: '/books/v1/volumes', query:[q:'quilting']) { resp, json ->
    if (resp.status == 200) {
        json?.items.each {book ->
            println "${book?.volumeInfo?.title}"
        }
    } else {
        return [error:"Did not return a proper response: ${resp.status}"]
    }
}
于 2012-02-29T02:29:58.197 回答