我现在已经使用RestSharp.Portable
一段时间了,我曾经将RestClient
类的IgnoreResponseStatusCode
设置为true
,以便自己处理错误(特别是连接错误)。
这里是一个非常简单的示例,在Windows Phone 8.1应用程序中使用通用项目和版本为3.1.0的RestSharp.Portable.HttpClient
:
try
{
var client = new RestClient("http://www.google.fr") { IgnoreResponseStatusCode = false };
var request = new RestRequest() {Method = Method.GET };
var data = await client.Execute(request);
Debug.WriteLine(data.IsSuccess == true ? "success" : "failed");
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);
}
如果我没有网络连接,代码会抛出一个“System.Net.Http.HttpRequestException”异常,消息为“响应状态代码未指示成功:404(未找到)”。
现在,如果我将“IgnoreResponseStatusCode”属性设置为“true”,则代码不会抛出任何异常。这是期望的行为,也就是我使用该库以来的行为。
问题出现在我尝试在具有相同版本“RestSharp.Portable.HttpClient”库的UWP应用程序上执行相同代码时。
似乎“IgnoreResponseStatusCode”不起作用,如果我没有网络连接,则代码会抛出以下异常(无论值设置为“true”还是“false”):“System.Net.Http.HttpRequestException”,消息为“发送请求时发生错误。”
在这种情况下,有没有不抛出异常的方法?这是“RestSharp.Portable.HttpClient”库的问题还是UWP的正常行为?
感谢您的帮助。
编辑:如果我使用“RestSharp.Portable.WebRequest”而不是“RestSharp.Portable.HttpClient”,它似乎可以正常工作。