我在我的项目中使用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不应该首先抛出异常。
答案 0 :(得分:0)
我已经明白了。
问题与以下事实有关:在Visual Studio中的Exception设置窗口(Debug - > Exceptions ...)中,所有复选框都在" Break中检查,例外是:Thrown"列。
因此,RestSharp代码捕获了异常,但是VS仍然在执行调用时打破执行,因为它已配置为执行此操作。