Groovy HTTPBuilder和formUrlEncoded
首先,对不起,我是groovy的新手 我正试图用HTTPBuilder向谷歌提出请求() 这是我的密码Groovy HTTPBuilder和formUrlEncoded,groovy,Groovy,首先,对不起,我是groovy的新手 我正试图用HTTPBuilder向谷歌提出请求() 这是我的密码 def code = new HTTPBuilder(oauthUrl).request(POST, URLENC) { req -> body = [client_id: clientId, scope: 'https://docs.google.com/feeds'] headers.'Accept' = 'application/json' header
def code = new HTTPBuilder(oauthUrl).request(POST, URLENC) { req ->
body = [client_id: clientId, scope: 'https://docs.google.com/feeds']
headers.'Accept' = 'application/json'
headers.'Content-Type' = 'application/x-www-form-urlencoded'
response.success = { resp, reader ->
println resp.statusLine
println reader
println reader.text
}
response.failure = { resp, reader ->
println resp.statusLine
println reader.text
}
}
当我运行此代码时,我得到println reader
的输出,而且resp.statusLine
显示200 Ok,但我得到println reader.text的null
我不明白为什么会这样
与curl相同的请求会给我正确的响应
{
"device_code" : "XXXXX",
"user_code" : "XXXX",
"verification_url" : "https://www.google.com/device",
"expires_in" : 1800,
"interval" : 5
}
编辑
这是输出
- HTTP/1.1200ok
- [{“设备代码”:“XXXk”,“用户代码”:“XXX”,“验证url”:“,”过期时间:1800,“间隔:5}:null]
- 空的
编辑2
我可以使用以下代码访问响应(我不确定它是否是干净的代码)
据我所知,reader
是一个已经解析的Map
——您不会得到stream的实例,而是已经解析的响应。由于没有文本
键,因此将得到null。尝试:
println reader.device_code
它应该很有效
您还可以使用以下工具检查什么是读卡器
:
println reader.getClass()
我假设println reader
打印出该响应的映射?我添加了一个编辑来显示输出println reader.device\u code
打印null
和println reader.getClass()
打印java.util.HashMap
。好的,这就是我说的:reader
是map
,并且它没有文本
和设备代码
键。您可以将reader
作为普通的groovyMap
。
println reader.getClass()