get请求不返回值

时间:2013-01-30 08:47:33

标签: ruby-on-rails json rest protocols

我正在尝试使用这篇文章:https://github.com/Licensario/licensario-rest-protocol/blob/master/rest-api.md#feature-usage

所以我写道:

## get request
feature_allocation_req = Net::HTTP::Get.new("/api/v1/users/external/#{user_id}/features/VIEW_TASKSed8e919e60/alloc?paymentPlanId=SUBSCRIPTI33dbf5e82a");

## add the headers
feature_allocation_req.add_field('ISV_API_KEY', 'bcffa3335a9068ab37ad51a68b4b47ea72f32a49c8f0b4f299a629edad04cdc3'); 
feature_allocation_req.add_field('ISV_API_SECRET', '14c990f3d4ee6354ee86fffdb057b3584f885c0d79cd3b354123e1b9acdc2227');

## start the get request
feature_allocation_result = nil
Net::HTTP.start("localhost", 3000) {|http|
    feature_allocation_result = http.request(feature_allocation_req)
}

## print the number of the response (I got 200 - OK)
puts feature_allocation_result.code

## deserialize JSON objects
feature_allocation_parameters = Yajl::Parser.parse(feature_allocation_result.body);
total_parameter = feature_allocation_parameters["total"];
used_parameter = feature_allocation_parameters["used"];
available_parameter = feature_allocation_parameters["available"];

## print them
puts "***********************"
puts total_parameter, used_parameter, available_parameter

但它什么都没打印。我写错了什么? (我认为如果我遇到问题,可以在“反序列化JSON对象”的步骤中找到问题,但我尝试了:JSON.parse并且它也不起作用)..

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

我要尝试的第一件事是打印feature_allocation_result.body的值。这将允许我确定对方是否发送正确的JSON并且错误是我的。有时我得到一个HTML错误页面而不是JSON,因为我的请求是错误的。打印body有助于澄清这一点。

既然你已经这样做了,我们就会发现该服务会向你发送有效的JSON,但所有值都是零。

{"total":null,"used":null,"available":null}

我们的解析没问题(但如果它更复杂的话,也可能不是这样)。无论如何,现在我们必须找出服务为什么不向我们发送我们期望的数据。