我正在调用一个返回文件或带有错误消息的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?
答案 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