次のような変数があるとします。
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);
ベストアンサー1
クラスを使用している場合はHttpClient
、HttpResponseMessage
戻る。
IsSuccessStatusCode
このクラスには、自動的にチェックを実行する便利なプロパティがあります。
using (var client = new HttpClient())
{
var response = await client.PostAsync(uri, content);
if (response.IsSuccessStatusCode)
{
//...
}
}
ご興味があれば、この物件は実装されたとして:
public bool IsSuccessStatusCode
{
get { return ((int)statusCode >= 200) && ((int)statusCode <= 299); }
}
このアルゴリズムを再利用すればない直接使用しますHttpClient
。
EnsureSuccessStatusCode
応答が成功しなかった場合に例外をスローするためにも使用できます。