将RestSharp与Xamarin一起使用 - 当HTTP请求失败时,Execute()会抛出异常

时间:2016-03-05 13:50:08

标签: c# exception xamarin restsharp

我在我的项目中使用RestSharp 105.2.3.0,该项目运行在Xamarin.Android 6.0.1.10上。

一切都还可以,但是几天来对Execute()方法的调用开始抛出异常,如果HTTP请求没有成功(我猜它与Xamarin平台的更新有关?)。

例如,我收到" System.Net.WebException:远程服务器返回错误:(403)Forbidden。"对于403响应状态代码和" System.Net.Sockets.SocketException:没有到主机的路由"如果主机无法访问。

这很奇怪,因为在这个页面上https://github.com/restsharp/RestSharp/wiki/Recommended-Usage - 我明白了:

  

请注意,不会抛出Execute中的异常,但可以在ErrorException属性中使用。

另外,我发现SO question或多或少是同一个问题。

建议的解决方案是设置IgnoreResponseStatusCode属性:

var client = new RestClient();
client.IgnoreResponseStatusCode = true;

但我在RestClient中找不到这个属性。

我该如何解决这个问题?当然,我可以在try..catch中包装Execute调用,但我更愿意避免它,因为Execute不应该首先抛出异常。

1 个答案:

答案 0 :(得分:0)

我已经明白了。

问题与以下事实有关:在Visual Studio中的Exception设置窗口(Debug - > Exceptions ...)中,所有复选框都在" Break中检查,例外是:Thrown"列。

因此,RestSharp代码捕获了异常,但是VS仍然在执行调用时打破执行,因为它已配置为执行此操作。

屏幕截图:http://i.stack.imgur.com/a0Fc4.png