HttpStatusCodeが成功か失敗かを確認する 質問する

HttpStatusCodeが成功か失敗かを確認する 質問する

次のような変数があるとします。

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

クラスを使用している場合はHttpClientHttpResponseMessage戻る。

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応答が成功しなかった場合に例外をスローするためにも使用できます。

おすすめ記事