Ruby on rails Http JSON POST请求返回带有ruby的空正文响应
我正在使用ruby&services,我尝试检索json响应,但只得到一个空的主体响应:Ruby on rails Http JSON POST请求返回带有ruby的空正文响应,ruby-on-rails,ruby,json,fiware-orion,Ruby On Rails,Ruby,Json,Fiware Orion,我正在使用ruby&services,我尝试检索json响应,但只得到一个空的主体响应: uri = URI("http://.../v1/queryContext") req = Net::HTTP::Post.new(uri.path, initheader = {'content-type' => 'application/json', 'Accept' => 'application/json'}) req.body = { "entities": [
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
请求工作正常(状态200/消息正常),但返回的JSON内容不存在(response.body.size=0)。非常奇怪,因为我可以看到它是由服务器生成的
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"
}
}
]
}
'
此外,以下等效卷曲效果良好:
(curl http://.../v1/queryContext -s -S --header 'Content-Type: application/json' \
--header 'Accept: application/json' -d @- | python -mjson.tool) <<EOF
{
"entities": [
{
"type": "Printer",
"isPattern": "false",
"id": "UM1"
}
]
}
EOF
(卷曲)http://.../v1/queryContext -s-s——标题“内容类型:application/json”\
--标题'Accept:application/json'-d@-| python-mjson.tool)您的代码看起来很好,我建议清除bundle的缓存(bundle clean--force
)并再次安装包
你也试过在不同的机器上运行它吗
顺便说一下,这里有一个关于使用HTTP库执行json请求的清晰示例:
您的请求正文似乎已格式化。如果您使用对象映射器或et,请检查您的对象映射器是否启用了prettyprint属性或类似属性?如果已启用,请将其删除,然后重试。如果不使用对象映射器,请尝试发送压缩正文而不是格式化正文
祝你好运 谢谢,是的,我在另一台机器上试过了,结果也一样。我还尝试了从服务器进行本地主机连接。好的,明白了。它与函数中运行的响应范围有关,即使其他值(response.status&response.message)良好,response.body也会从函数中丢失。