Http JSON POST请求返回带有ruby的空体响应

时间:2015-12-02 17:24:07

标签: ruby-on-rails ruby json fiware-orion

我正在玩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内容吗?

由于

2 个答案:

答案 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属性或类似的东西?如果已启用,请将其删除并重试。如果您不使用对象映射器,请尝试发送紧凑的正文而不是格式化。

祝你好运!