
C#でAPIを叩くならHttpClient!基本から応用まで、わかりやすく解説します。
C#でAPIを呼び出す基本:HttpClientとは
C#でAPIを呼び出す際に最もよく使われるのがHttpClient
クラスです。HttpClient
は、HTTPリクエストを送信し、HTTPレスポンスを受信する機能を提供します。この記事では、HttpClient
の基本的な使い方から、より実践的な応用までを解説します。
HttpClient
を使うことで、Web APIとの連携が非常に簡単になります。データの取得、送信、更新など、様々な操作をC#のコードから行うことができます。
まずは、HttpClient
を使うための準備をしましょう。通常、.NETプロジェクトを作成すれば、HttpClient
はすぐに利用できます。もし利用できない場合は、NuGetパッケージマネージャーからSystem.Net.Http
パッケージをインストールしてください。
HttpClientの基本的な使い方
HttpClient
を使ったAPI呼び出しは、以下の手順で行います。
1. HttpClient
オブジェクトの作成
2. リクエストの送信 (GET, POST, PUT, DELETEなど)
3. レスポンスの受信
4. レスポンスの処理
以下に、GETリクエストを送信する基本的なコード例を示します。
using System.Net.Http;
using System.Threading.Tasks;
public class ApiClient
{
private static readonly HttpClient client = new HttpClient();
public static async Task<string> GetAsync(string uri)
{
HttpResponseMessage response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode(); // エラーレスポンスの場合は例外をスロー
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
}
このコードでは、HttpClient
のインスタンスを作成し、GetAsync
メソッドを使ってGETリクエストを送信しています。EnsureSuccessStatusCode
メソッドは、レスポンスが成功(200番台)であるかどうかを確認し、そうでない場合は例外をスローします。ReadAsStringAsync
メソッドは、レスポンスのボディを文字列として読み込みます。
次に、このメソッドを呼び出す例を示します。
using System;
using System.Threading.Tasks;
public class Example
{
public static async Task Main(string[] args)
{
string apiUrl = "https://jsonplaceholder.typicode.com/todos/1"; // 例としてJSONPlaceholderのAPIを使用
try
{
string response = await ApiClient.GetAsync(apiUrl);
Console.WriteLine(response);
}
catch (HttpRequestException e)
{
Console.WriteLine($"Exception caught: {e.Message}");
}
}
}
POSTリクエストの送信
POSTリクエストを送信するには、PostAsync
メソッドを使用します。POSTリクエストでは、通常、データをサーバーに送信します。データを送信するためには、HttpContent
クラスを使用します。以下に、JSON形式のデータを送信する例を示します。
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
public class ApiClient
{
private static readonly HttpClient client = new HttpClient();
public static async Task<string> PostAsync(string uri, string jsonData)
{
StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(uri, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
}
このコードでは、StringContent
クラスを使ってJSONデータをHTTPコンテンツとして作成し、PostAsync
メソッドに渡しています。Encoding.UTF8
は文字エンコーディングを指定し、application/json
はコンテンツタイプを指定しています。
次に、このメソッドを呼び出す例を示します。
using System;
using System.Threading.Tasks;
public class Example
{
public static async Task Main(string[] args)
{
string apiUrl = "https://jsonplaceholder.typicode.com/posts"; // 例としてJSONPlaceholderのAPIを使用
string jsonData = "{\"title\": \"foo\",\"body\": \"bar\",\"userId\": 1}";
try
{
string response = await ApiClient.PostAsync(apiUrl, jsonData);
Console.WriteLine(response);
}
catch (HttpRequestException e)
{
Console.WriteLine($"Exception caught: {e.Message}");
}
}
}
エラーハンドリング
API呼び出しでは、様々なエラーが発生する可能性があります。ネットワークの問題、サーバーのエラー、データの形式の問題などです。HttpClient
では、これらのエラーを適切に処理するために、try-catch
ブロックを使用します。
上記の例でも、HttpRequestException
をキャッチしてエラーメッセージを表示しています。EnsureSuccessStatusCode
メソッドを使用することで、エラーレスポンス(400番台、500番台)を例外として処理することができます。
より詳細なエラーハンドリングを行うためには、レスポンスのステータスコードをチェックしたり、レスポンスのボディを解析したりする必要があります。
参考リンク
まとめ
HttpClient
を使うことで、C#から簡単にAPIを呼び出すことができます。GETリクエスト、POSTリクエスト、エラーハンドリングなど、基本的な使い方をマスターすることで、様々なWeb APIとの連携が可能になります。ぜひ、HttpClient
を使って、Webアプリケーション開発をより効率的に進めてください。