Groovy HTTPBuilder查询参数
我试图理解HTTP Builder的简化GET。我成功地使用了与REST GET请求类似的简单GET请求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 } 我接下来要做的是向查询中添加参数
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);