RestSharp.Portable - IgnoreResponseStatusCode属性在UWP应用程序中无法正常工作?

3

我现在已经使用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”,它似乎可以正常工作。

你好。在调用请求之前,检查一下网络连接怎么样?而不是操纵库属性?你需要这种精确的方式吗? - Daniel Krzyczkowski
1个回答

0

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

行为在所有平台上都不一致,因为HttpClient的所有实现(不包括RestSharp.Portable)都有些微差异。我会尽力消除所有这些差异,但可能需要一些时间。我暂时不关闭此票。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接