我是红宝石的新手(也是编程方面的)
我已经构建了这段代码:
#This method executing a url and give the response in json format
def get url
return JSON.parse(RestClient::Request.execute(method: :get, url: url))
end
现在我正在尝试处理一个案例,即来自任何网址的响应代码都不正常,我想将其替换为错误消息“error”
我尝试用以下代码替换get方法:
def get url
if ((RestClient::Request.execute(method: :get, url: url)).code == 200)
return JSON.parse(RestClient::Request.execute(method: :get, url: url))
else
error = "error"
return error.as_json
end
end
但是如果来自网址的响应不是200,我会收到错误消息“406不可接受”而不是“错误”
提前致谢
答案 0 :(得分:6)
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.User.Identity.IsAuthenticated)
{
FormsAuthentication.RedirectToLoginPage();
}
}
收到错误响应时会引发异常(响应代码不是2xx / 3xx):
- 对于200到207之间的结果代码,将返回RestClient :: Response
- 对于结果代码301,302或307,如果请求是GET或HEAD,则将遵循重定向
- 对于结果代码303,将遵循重定向并将请求转换为GET
- 对于其他情况,将引发持有Response的RestClient :: Exception;将针对已知错误代码抛出特定的异常类
- 调用.response来获取服务器响应的异常
您应该处理该异常:
RestClient::Request
有关Ruby异常处理的更多信息: