【问题标题】:RestSharp.Portable - IgnoreResponseStatusCode property does not work on UWP apps?RestSharp.Portable - IgnoreResponseStatusCode 属性不适用于 UWP 应用程序?
【发布时间】:2016-03-29 17:08:56
【问题描述】:

我目前使用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);
}

如果我没有 Internet 连接,代码将引发 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 它似乎可以正常工作

【问题讨论】:

  • 你好。在调用请求之前检查互联网连接怎么样?而不是操纵库属性?你需要这种确切的方式吗?

标签: c# .net win-universal-app uwp restsharp


【解决方案1】:

我知道我的问题很老了,图书馆也不再维护了,但是图书馆的作者直接在github上回答了这个问题:

遗憾的是,这种行为在所有平台上都是不一致的,因为 HttpClient(不是 RestSharp.Portable)的所有实现都有细微的差异。我会尝试消除所有这些差异,但这可能需要一些时间。我暂时保留这张票。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2023-01-30
    • 2020-04-14
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多