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

本文关键字:HTTP 会在 请求 失败 抛出异常 Execute Xamarin RestSharp 一起 | 更新日期: 2023-09-27 18:37:26

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

一切都很好,但是几天如果HTTP请求不成功,对Execute()方法的调用开始引发异常(我想这与Xamarin平台的更新有关?

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

这很奇怪,因为在此页面上 - https://github.com/restsharp/RestSharp/wiki/Recommended-Usage - 我看到:

请注意,不会引发来自 Execute 的异常,而是在 ErrorException 属性中可用。

另外,我发现了一个SO问题,它或多或少是针对同一问题的。

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

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

但我在 RestClient 中没有看到此属性。

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

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

我已经想通了。

该问题与以下事实有关:在Visual Studio的"异常设置"窗口(调试->异常...)中,所有复选框都选中了"异常时中断:抛出"列。

因此,异常被 RestSharp 代码捕获,但 VS 仍然在执行调用中断执行,因为它被配置为这样做。

截图:https://i.stack.imgur.com/a0Fc4.png