RestSharp.Portable-IgnoreResponseStatusCode属性在UWP应用程序上不起作用

本文关键字:应用程序 程序上 不起作用 应用 UWP Portable-IgnoreResponseStatusCode 属性 RestSharp | 更新日期: 2023-09-27 18:27:53

我现在使用RestSharp.Portable有一段时间了,我曾经将RestClient类的IgnoreResponseStatusCode设置为true,以便自己管理错误(尤其是连接错误)。

这里有一个非常简单的例子,在WindowsPhone8.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异常,并显示消息Response status code does not indicate success: 404 (Not Found).

现在,如果我将IgnoreResponseStatusCode属性设置为true,那么代码不会引发任何异常。这是预期的行为,我指的是自从我使用这个库以来的行为。

当我试图在使用相同版本的RestSharp.Portable.HttpClient库的UWP应用程序上执行相同的代码时,就会出现这个问题。

IgnoreResponseStatusCode似乎不起作用,如果我没有互联网连接,代码会抛出以下异常(无论值设置为true还是false):System.Net.Http.HttpRequestException,消息为An error occurred while sending the request.

在这种情况下,有没有办法不抛出异常?这是RestSharp.Portable.HttpClient库的问题还是UWP的正常行为?

谢谢你的帮助。

编辑:如果我使用RestSharp.Portable.WebRequest而不是RestSharp.Portable.HttpClient,它似乎可以正常工作

RestSharp.Portable-IgnoreResponseStatusCode属性在UWP应用程序上不起作用

我知道我的问题已经过时了,库也不再维护了,但库的作者直接在github上回答了这个问题:

遗憾的是,所有平台的行为都不一致,因为HttpClient(而不是RestSharp.Portable)的所有实现都有细微的差异。我会设法消除所有这些分歧,但这可能需要一些时间。我暂时不开这张票。