※ この記事にはアフィリエイトリンクが含まれます
C#でAPIを呼び出すときに、うまく動かなくて悩んでいませんか?
多くの初学者が接続や認証、エラー処理で詰まります。
- APIへの接続方法がわからない
- POSTやGETの実装で失敗する
- 認証トークンやヘッダの扱いで混乱する
結論から言うと、正しい準備と基本パターンを押さえれば
C#でのAPI呼び出しは安定して実装できます。
・HttpClientの基本的な使い方を覚える
・非同期処理(async/await)を使う
・エラー処理とセキュリティの注意点を実装する
この記事では、C# API 呼び出しの基礎から具体的なコード例、
運用で気をつけるポイントまで順を追って解説します。
C#でAPIを呼び出す準備と基礎知識
まずはHTTP通信の基本を理解しましょう。
C#では主にHttpClientを利用します。
HttpClientはGETやPOSTといったリクエストを送信し、
レスポンスを受け取るための標準的なクラスです。
HttpClientの役割と使い方のポイント
HttpClientは使い方を誤るとコネクションリークなどの問題が出ます。
基本は再利用して使うことが重要です。
ASP.NET CoreではIHttpClientFactoryを使って生成するのが推奨です。
コンソールアプリでは静的なインスタンスを再利用してください。
基本的なGETリクエストの実装例
まずは簡単なGETリクエストを行う例を示します。
非同期で実行するのが標準的です。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Example {
static async Task Main() {
using var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(30);
var url = "https://api.example.com/items";
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode) {
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
} else {
Console.WriteLine($"Error: {(int)response.StatusCode}");
}
}
}ポイントはasync/awaitを使うことと、
IsSuccessStatusCodeで成功判定をすることです。
またタイムアウト設定や例外処理も必ず追加しましょう。
ネットワークは必ず失敗する可能性があります。
POSTでJSONを送る具体例
APIにデータを送るときはJSONを使うことが多いです。
Content-Typeをapplication/jsonに設定します。
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class PostExample {
static async Task Main() {
using var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(30);
var url = "https://api.example.com/items";
var requestData = new { name = "sample", value = 123 };
var json = JsonSerializer.Serialize(requestData);
var content = new StringContent(json, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "YOUR_TOKEN");
var response = await client.PostAsync(url, content);
if (response.IsSuccessStatusCode) {
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
} else {
var err = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Error: {(int)response.StatusCode} {err}");
}
}
}ここでのポイントはヘッダの設定とJSONシリアライズです。
AuthenticationHeaderValueでBearerトークンを設定しています。
エラー処理とデバッグの実践
API呼び出しではステータスコードだけでなく
レスポンスボディのメッセージも確認するべきです。
例外処理も必須です。タイムアウトやネットワーク例外を捕捉し、
ログを残して再試行やユーザーへの通知を行いましょう。
例外処理の基本パターン
HttpRequestExceptionやTaskCanceledExceptionを捕まえます。
詳細なログと共に処理を分岐させます。
try {
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
} catch (HttpRequestException ex) {
// ネットワーク関連の例外
Console.WriteLine("Network error: " + ex.Message);
} catch (TaskCanceledException ex) {
// タイムアウト
Console.WriteLine("Timeout: " + ex.Message);
}EnsureSuccessStatusCodeは成功でない場合に例外を投げます。
これを使うか、IsSuccessStatusCodeで細かく判定するか選べます。
セキュリティと認証の注意点
API呼び出しでは認証情報を安全に扱うことが重要です。
トークンやAPIキーをソースコードに直書きしないでください。
環境変数やシークレットストアを利用して、
本番環境では安全に保存・取得しましょう。
実運用での推奨設定
HTTPSを必ず使用し、証明書検証を有効にします。
必要に応じてTLSのバージョン制限を行います。
また、レートリミットやリトライポリシーを設計し、
サービス保護と安定性を確保しましょう。
実践的な改善ポイントとベストプラクティス
長期運用を考えるとHttpClientの管理が重要です。
毎回newするのではなく再利用してください。
ASP.NET CoreではIHttpClientFactoryを使えば
接続管理や名前付きクライアントが簡単に扱えます。
- HttpClientは再利用する
- 非同期処理を徹底する(UIをブロックしない)
- 例外とステータスコードを適切に処理する
- 認証情報は安全に管理する
よくあるトラブルと対処法
よくある問題はタイムアウト、認証失敗、CORSなどです。
ログを見て原因を特定するのが第一歩です。
タイムアウトはTimeoutプロパティやCancellationTokenで対応し、
認証失敗はヘッダやトークンの有効期限を確認してください。
まとめ
ここまででC# API 呼び出しの基本を網羅しました。
ポイントはHttpClientの使い方とエラー処理です。
この記事を参考に、まずは小さなAPI呼び出しを実装してみてください。
実際に動かして学ぶことで理解が深まります。

#エンジニアとして、もっと自分の力を活かしたいあなたへ
「このまま今の職場にいて、成長できるんだろうか?」
C#を使っている方なら、一度はそう感じたことがあるかもしれません。
実は今、C#/.NETエンジニアの市場価値は高まっており、
年収アップ・フルリモート・自社開発企業など、選べる選択肢は確実に増えています。
もし今後、C#を活かして働きたい、あるいは開発現場で経験を積みたいとお考えなら…
自分に合った転職サービスを早めに知っておくことが大きな武器になります。
現役エンジニアからのサポート付き・無料で学べるスクール・社内SE特化の求人など、
転職支援サービスを厳選したまとめ記事をこちらで紹介しています。

ここまで読んでいただきありがとうございました。
コメント