我正在玩ruby&服务,我试图检索一个json响应,但只得到一个空体响应:
Program
请求正常(状态200 /消息正常)但返回的JSON内容不存在( response.body.size = 0)。非常奇怪,因为我可以看到它是由服务器生成的。
uri = URI("http://.../v1/queryContext")
req = Net::HTTP::Post.new(uri.path, initheader = {'content-type' => 'application/json', 'Accept' => 'application/json'})
req.body = {
"entities": [
{
"type": "Printer",
"isPattern": "false",
"id": "UM1"
}
]
}.to_json
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(req)
end
此外,以下卷曲等效工作正常:
Response payload: '{
"contextResponses" : [
{
"contextElement" : {
"type" : "Printer",
"isPattern" : "false",
"id" : "UM1",
"attributes" : [
{
"name" : "bed",
"type" : "float",
"value" : "50"
},
{
"name" : "temperature",
"type" : "float",
"value" : "180"
}
]
},
"statusCode" : {
"code" : "200",
"reasonPhrase" : "OK"
}
}
]
}
'
我使用像httpclient或unirest这样的宝石有同样的问题。 Ruby中有什么特别的东西可以用来接收期待已久的json内容吗?
由于
答案 0 :(得分:4)
您的代码看起来很好,我建议清除捆绑缓存(bundle clean --force
)并再次安装包。
您是否也尝试在另一台机器上运行它?
顺便说一句,这是一个关于使用您正在使用的HTTP库执行json请求的明显示例: https://www.socialtext.net/open/very_simple_rest_in_ruby_part_3_post_to_create_a_new_workspace
答案 1 :(得分:0)
您的请求的正文看起来很漂亮。如果您使用object mapper或et。你可以检查一下你的对象映射器是否启用了prettyprint属性或类似的东西?如果已启用,请将其删除并重试。如果您不使用对象映射器,请尝试发送紧凑的正文而不是格式化。
祝你好运!