【发布时间】:2015-09-14 16:48:18
【问题描述】:
假设我有以下变量:
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);
【问题讨论】:
-
你需要从那里做
int code = (int)Response.StatusCode你需要创建你自己的Enum在这里查看工作示例stackoverflow.com/questions/1330856/… -
您是否有机会使用
HttpClient类? -
@dcastro 不,对不起。我正在使用可能(或可能不会)在内部使用它的 高级 API。 API 会暴露响应的状态码,但不会暴露内部的
HttpResponseMessage例如 -
@MatiCicero 太糟糕了:/ 您始终可以重用
HttpResponseMessage.IsSuccessStatusCode的实现(请参阅我的回答),这与您的第一种方法完全相同,并使其成为 @987654331 上的扩展方法@类型。
标签: c# .net system.net