Я играл с рубином & услуги, я пытаюсь извлечь ответ JSon, НО только получить пустой ответ тела:запрос Http JSON POST возвращает пустой ответ тела с рубином
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
Просьбы работает отлично (Status 200/Message OK), но содержимое 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
У меня точно такой же вопрос, используя драгоценные камни, как HttpClient или unirest. Есть ли что-то особенное в Ruby, которое нужно сделать, чтобы получить ожидаемое содержание json?
Благодаря
OK Got It. он был связан с объемом ответа, который выполнялся в функции, даже если другие значения были точными (response.status & response.message), response.body был потерян из функции. –