我在运行Xamarin的项目中使用RestSharp 105.2.3.0。安卓6.0.1.10。
一切都很好,但几天之后,如果HTTP请求没有成功,对Execute()方法的调用开始抛出异常(我想这与Xamarin平台的更新有关?)。
例如,我收到403响应状态代码的“System.Net.WebException:The remote server returned an error:(403)Forbidden.”(系统.Net.Sockets.SocketException:远程服务器返回错误:(403:禁止)),如果主机不可访问,则收到“System.Net.Socket.SocketException:No route to host”(系统.Net.Socckets.SocketExc。
这很奇怪,因为在这个页面上-
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不应该首先抛出异常。