假设我有以下变量:
System.Net.HttpStatusCode status = System.Net.HttpStatusCode.OK;
如何检查这是成功状态码还是失败状态码?
例如,我可以执行以下操作:
int code = (int)status;
if(code >= 200 && code < 300) {
//Success
}
我也可以有某种白名单:
HttpStatusCode[] successStatus = new HttpStatusCode[] {
HttpStatusCode.OK,
HttpStatusCode.Created,
HttpStatusCode.Accepted,
HttpStatusCode.NonAuthoritativeInformation,
HttpStatusCode.NoContent,
HttpStatusCode.ResetContent,
HttpStatusCode.PartialContent
};
if(successStatus.Contains(status)) //LINQ
{
//Success
}
这些替代方案都无法说服我,我希望有一个 .NET 类或方法可以为我完成这项工作,例如:
bool isSuccess = HttpUtilities.IsSuccess(status);
最佳答案
如果您使用的是 HttpClient
类,那么您将获得 HttpResponseMessage
回来。
此类有一个名为 IsSuccessStatusCode
的有用属性,它将为您进行检查。
using (var client = new HttpClient())
{
var response = await client.PostAsync(uri, content);
if (response.IsSuccessStatusCode)
{
//...
}
}
如果您好奇的话,这个属性是 implemented作为:
public bool IsSuccessStatusCode
{
get { return ((int)statusCode >= 200) && ((int)statusCode <= 299); }
}
因此,如果您不直接使用 HttpClient
,则可以重用该算法。
如果响应不成功,您还可以使用 EnsureSuccessStatusCode
抛出异常。
关于c# - 检查 HttpStatusCode 是否表示成功或失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569860/