本文へスキップ
BecomeCoder

C#実践コース · 第2章 HTTP通信 · レッスン10

ステータスコードとエラー処理

ブラウザで完結

導入

通信は失敗することがあります。HTTPは結果をステータスコードという3桁の数字で教えてくれます。成否を確認し、失敗に備えるのが実務のHTTPコードの基本姿勢です。

図解

flowchart TB
    SC["ステータスコード"] --> S2["2xx 成功<br/>200 OK"]
    SC --> S4["4xx 呼び方が悪い<br/>404 見つからない / 401 未認証"]
    SC --> S5["5xx 相手の障害<br/>500 内部エラー"]
    style S2 fill:#e8f5e9
    style S4 fill:#fff3e0
    style S5 fill:#ffebee

サンプル

using var client = new HttpClient();

// GetAsync はレスポンス全体(ステータス+本文)を返す
HttpResponseMessage response = await client.GetAsync(Web.Origin + "/api/hello.json");

Console.WriteLine($"ステータス: {(int)response.StatusCode}");   // 200

if (response.IsSuccessStatusCode)   // 2xx なら true
{
    string body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}
else
{
    Console.WriteLine("取得に失敗しました");
}
  • GetAsyncHttpResponseMessage(ステータス+本文)を返す
  • (int)response.StatusCodeで数値、IsSuccessStatusCodeで成否(2xxか)を判定
  • 4xxは呼び方の誤り、5xxは相手の障害——原因切り分けの第一歩

演習

using var client = new HttpClient();

// 存在しないURL(404が返る)にアクセスします
HttpResponseMessage response = await client.GetAsync(Web.Origin + "/api/not-exists.json");

// TODO: 失敗なら "エラー: 404" の形式で((int)response.StatusCode を使って)出力してください
___
  • 期待される出力: エラー: 404
ヒント1を見る

if (!response.IsSuccessStatusCode) Console.WriteLine($"エラー: {(int)response.StatusCode}");

ヒント2を見る

存在しないファイルへのGETは404を返します

まとめ

  • ステータスコードで通信の成否が分かる(2xx=成功)
  • IsSuccessStatusCode(int)StatusCodeで判定
  • 4xx=呼び方の誤り、5xx=相手の障害

次回: 受け取ったJSONをオブジェクトに変換します。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。