检查是否HttpStatusCode代表成功或失败 [英] Checking if HttpStatusCode represents success or failure

查看:3410
本文介绍了检查是否HttpStatusCode代表成功或失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我们假设我有以下变化:

  System.Net.HttpStatusCode状态= System.Net.HttpStatusCode.OK; 



我如何检查,如果这是一个成功的状态码还是失败的?



比如说,我可以做到以下几点:

  INT码=(INT)状态; 
如果(代码> = 200安培;&放大器;代码< 300){
//成功
}

我也可以有某种白名单:

  HttpStatusCode [] successStatus =新HttpStatusCode [] {
HttpStatusCode.OK,
HttpStatusCode.Created,
HttpStatusCode.Accepted,
HttpStatusCode.NonAuthoritativeInformation,
HttpStatusCode.NoContent,
HttpStatusCode.ResetContent,
HttpStatusCode.PartialContent
};
如果(successStatus.Contains(状态))// LINQ
{
//成功
}

这些方案都没有说服我,我希望的是能为我做这项工作的.NET类或方法,如:

 布尔isSuccess = HttpUtilities.IsSuccess(状态); 


解决方案

如果您使用的 HttpClient的类,那么你会得到一个的 HttpResponseMessage 回来。



本类有一个叫有用的属性 IsSuccessStatusCode 会为你做检查。

 使用(VAR客户端=新的HttpClient())
{
VAR响应=等待client.PostAsync(URI,内容);
如果(response.IsSuccessStatusCode)
{
// ...
}
}

在情况下,你很好奇,这个属性是实现

 公共BOOL IsSuccessStatusCode 
{
{返回((INT)的StatusCode> = 200) &功放;&安培; ((INT)的StatusCode< = 299); }
}



所以,你如果你的可以只重用此算法不的使用的HttpClient 直接



您也可以使用 EnsureSuccessStatusCode 抛出一个异常的情况下的反应却并不成功。


Let's suppose I have the following variable:

System.Net.HttpStatusCode status = System.Net.HttpStatusCode.OK;

How can I check if this is a success status code or a failure one?

For instance, I can do the following:

int code = (int)status;
if(code >= 200 && code < 300) {
    //Success
}

I can also have some kind of white list:

HttpStatusCode[] successStatus = new HttpStatusCode[] {
     HttpStatusCode.OK,
     HttpStatusCode.Created,
     HttpStatusCode.Accepted,
     HttpStatusCode.NonAuthoritativeInformation,
     HttpStatusCode.NoContent,
     HttpStatusCode.ResetContent,
     HttpStatusCode.PartialContent
};
if(successStatus.Contains(status)) //LINQ
{
    //Success
}

None of these alternatives convinces me, and I was hoping for a .NET class or method that can do this work for me, such as:

bool isSuccess = HttpUtilities.IsSuccess(status);

解决方案

If you're using the HttpClient class, then you'll get a HttpResponseMessage back.

This class has a useful property called IsSuccessStatusCode that will do the check for you.

using (var client = new HttpClient())
{
    var response = await client.PostAsync(uri, content);
    if (response.IsSuccessStatusCode)
    {
        //...
    }
}

In case you're curious, this property is implemented as:

public bool IsSuccessStatusCode
{
    get { return ((int)statusCode >= 200) && ((int)statusCode <= 299); }
}

So you can just reuse this algorithm if you're not using HttpClient directly.

You can also use EnsureSuccessStatusCode to throw an exception in case the response was not successful.

这篇关于检查是否HttpStatusCode代表成功或失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆