2014-02-13 20 views
0

我正在调用一个URL,该URL返回一个文件或一个带有错误信息的JSON。因此,例如如何测试RestClient是否正在返回文件或JSON?

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

这似乎做到这一点:

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