導入
通信は失敗することがあります。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("取得に失敗しました");
}
GetAsyncはHttpResponseMessage(ステータス+本文)を返す(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をオブジェクトに変換します。