如何测试RestClient是返回文件还是JSON?

时间:2014-02-13 17:16:20

标签: ruby ruby-on-rails-2 rest-client

我正在调用一个返回文件或带有错误消息的JSON的URL。所以,例如

resp = RestClient.get "my_url"
=> "\037\213\b\b\n\206XR\002\3....."

resp = RestClient.get "my_url"
=> "{\"status\": 1}"

我需要定义输出是JSON还是文件。所以我可以这样做:

begin 
  JSON.parse(resp)
  # is a json
rescue ExceptionThatIDontRecallTheNameRightNow => e
  # it is a file
end

但这实际上不起作用,因为我们会将格式错误的json作为文件。

所以问题是,如何验证此答案是文件还是JSON?

1 个答案:

答案 0 :(得分:1)

这似乎是这样做的:

resp = RestClient.post(full_url, params, HTTP_HEADERS)
if resp.headers[:content_type] == 'application/octet-stream'
  resp
else
  resp = JSON.parse(resp)
  ...
end