Groovy HTTPBuilder查询参数

Groovy HTTPBuilder查询参数,groovy,httpbuilder,Groovy,Httpbuilder,我试图理解HTTP Builder的简化GET。我成功地使用了与REST GET请求类似的简单GET请求 def client = new HTTPBuilder('http://pokeapi.co') def resp = client.get(path: '/api/v1/pokemon/1') static void main(String[] args){ def h = new HTTP() print h.resp.name } 我接下来要做的是向查询中添加参数

我试图理解HTTP Builder的简化GET。我成功地使用了与REST GET请求类似的简单GET请求

def client = new HTTPBuilder('http://pokeapi.co')
def resp = client.get(path: '/api/v1/pokemon/1')

static void main(String[] args){
    def h = new HTTP()
    print h.resp.name
}
我接下来要做的是向查询中添加参数

def client = new HTTPBuilder('http://svcs.sandbox.ebay.com')
def resp = client.get(path: '/services/search/FindingService/v1',
                      contentType: TEXT,
                      query:[
                          'SECURITY-APPNAME': APP_ID,
                          'OPERATION-NAME':'findItemsByKeywords',
                          'SERVICE_VERSION':'1.0.0',
                          'RESPONSE-DATA-FORMAT':'JSON',
                          'callback':'_cb_findItemsByKeywords',
                          'REST-PAYLOAD': '',
                          'keywords':'iphone 3g',
                          'paginationInput.entriesPerPage': '3'])
}
当我打印
resp
时,我得到:

java.io.StringReader@16d871c0
参数的代码是否正确?我的输出有什么问题

我的查询(通过浏览器运行时)生成


修好了。contentType不是
TEXT

您可以将contentType设置为TEXT,它可以工作。实际上,您会收到一个java.io.StringReader,您可以将其转换为字符串

import org.apache.commons.io.IOUtils;
...
String string = IOUtils.toString(reader);
有关从StringReader到String转换的更多选项,请参见此处:


重要!通过将ContentType设置为TEXT,GET方法将准确返回检索到的内容。如果将ContentType设置为JSON,GET方法将自动将JSON响应解析为LazyMap,这并不总是您想要的。

修复了它<代码>内容类型不应设置为
文本
import org.apache.commons.io.IOUtils;
...
String string = IOUtils.toString(reader);