2014-02-13 22 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