检查是否HttpStatusCode代表成功或失败 [英] Checking if HttpStatusCode represents success or failure
问题描述
让我们假设我有以下变化:
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屋!