カテゴリ: C# 更新日: 2026/08/23

C# HttpClientでAPI通信!GET・POSTリクエストの送り方を初心者向けに徹底解説

C#のHttpClientでGET・POSTリクエストを送る方法
C#のHttpClientでGET・POSTリクエストを送る方法

先生と生徒の会話形式で理解しよう

生徒

「C#を使って、インターネット上のデータと通信する方法ってありますか?」

先生

「C#では、HttpClientという機能を使うことで、WebサイトやAPIと簡単に通信ができます。」

生徒

「APIとかHttpClientって難しそうですが、初心者でも使えますか?」

先生

「もちろんです!手紙を出すときと同じような感覚で、データを送ったり受け取ったりできる仕組みを見ていきましょう。」

1. HttpClientとは何か?初心者向けの基本知識

1. HttpClientとは何か?初心者向けの基本知識
1. HttpClientとは何か?初心者向けの基本知識

プログラミングの世界で、プログラム同士がインターネットを通じて会話をすることをAPI連携通信と呼びます。例えば、天気予報のWebサイトから今日の天気の情報をもらったり、逆に自分の名前をサーバーに送って登録したりすることです。このとき、C#というプログラム言語で「相手に何かを送る」「相手から何かをもらう」という役割を果たしてくれるのがHttpClient(エイチティーティーピー・クライアント)という部品です。

Webサイトを見るためのブラウザが通信を行うのと同じように、C#のプログラムもHttpClientを使うことで、遠く離れたコンピュータとデータのやり取りが可能になります。まずは、この機能を使うための基本的な準備から学んでいきましょう。

2. HTTPリクエストの基本とGETメソッドの仕組み

2. HTTPリクエストの基本とGETメソッドの仕組み
2. HTTPリクエストの基本とGETメソッドの仕組み

HTTPとは、Web上で情報をやり取りするための約束事です。その中で、もっともよく使われるのがGET(ゲット)という指示です。GETは、直訳すると「取得する」という意味で、Webサイトの情報を見たいときや、サーバーからデータをダウンロードしたいときに使います。例えるなら、自動販売機に硬貨を入れて、ボタンを押して飲み物を取り出すようなイメージです。あなたは「飲み物がほしい」という指示を出し、自動販売機がそれに応えて飲み物を渡してくれます。

C#でGETリクエストを送るには、HttpClientのインスタンス(機能の実体)を作成し、GetAsyncメソッドを使います。非同期処理(ひどうきしょり)という言葉が出てきますが、これは「相手から返事が来るまで、他の仕事を止めない」ための重要な仕組みです。通信は時間がかかることがあるので、プログラムがフリーズしないようにこの非同期という技術を使います。


using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using (HttpClient client = new HttpClient())
        {
            string url = "https://jsonplaceholder.typicode.com/posts/1";
            HttpResponseMessage response = await client.GetAsync(url);
            string content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
    }
}

このコードを実行すると、指定したWebサイトから取得したデータが画面に表示されます。

3. POSTリクエストでサーバーへデータを送ろう

3. POSTリクエストでサーバーへデータを送ろう
3. POSTリクエストでサーバーへデータを送ろう

次に、サーバーにデータを送るPOST(ポスト)という方法について学びます。POSTは、Webサイトの問い合わせフォームで内容を入力して送信ボタンを押すときのように、「こちらの情報を相手に渡して処理してもらう」ときに使います。GETが「情報をもらう」ことなら、POSTは「情報を入れる」作業です。

POSTリクエストを送るには、送りたいデータをJSON(ジェイソン)形式という文字列に変換する必要があります。JSONは、コンピュータ同士がデータをやり取りするための共通言語のようなものです。以下のようにして、サーバーへデータを送信します。


using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

// 送りたいデータをJSON形式で用意します
string json = "{\"title\": \"foo\", \"body\": \"bar\"}";
HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");

using (HttpClient client = new HttpClient())
{
    // 指定したアドレスにデータをPOSTで送信します
    HttpResponseMessage response = await client.PostAsync("https://jsonplaceholder.typicode.com/posts", content);
    string responseBody = await response.Content.ReadAsStringAsync();
    Console.WriteLine(responseBody);
}

これにより、指定したURLに対してあなたのデータを「投稿」することができます。

4. 通信結果のステータスコードを正しく判断する

4. 通信結果のステータスコードを正しく判断する
4. 通信結果のステータスコードを正しく判断する

インターネットの通信では、相手のサーバーが常に正常とは限りません。例えば、Webページが消えていたり、通信が混雑していたりすることもあります。そうしたとき、サーバーはステータスコードという数字を返してきます。これは通信の成功や失敗を知らせるサインです。

もっとも有名なのは「200」という数字で、これは「成功(OK)」を意味します。一方で、よく聞く「404」という数字は「見つかりません」というエラーです。プログラムでは、このステータスコードをチェックして、成功したときだけ次の処理に進むように書くのが基本です。


if (response.IsSuccessStatusCode)
{
    Console.WriteLine("通信が成功しました!");
}
else
{
    Console.WriteLine("通信が失敗しました。");
}

このように条件分岐を使うことで、プログラムがエラーで止まってしまうことを防げます。

5. HttpClientを効率よく使うためのベストプラクティス

5. HttpClientを効率よく使うためのベストプラクティス
5. HttpClientを効率よく使うためのベストプラクティス

HttpClientを扱う際、ひとつ気をつけるべきことがあります。それは、HttpClientを何度も新しく作り直さないことです。プログラムの世界では「リソースの枯渇(かれかつ)」と呼ばれる問題が起こる可能性があります。HttpClientは、一度作ったらそれをアプリ内で使い回すのが、プロのエンジニアの共通認識です。

初心者のうちはあまり意識しなくて良いかもしれませんが、大きなアプリを作るときには、クラスのフィールド(変数の保存場所)で一度だけ作成するように工夫してみましょう。また、using(ユーザイング)というブロックを使うことで、通信が終わったあとに自動的に後片付けをしてくれるという便利な機能も活用してください。

6. 通信エラーを避けるための安全な書き方

6. 通信エラーを避けるための安全な書き方
6. 通信エラーを避けるための安全な書き方

通信は物理的にネットワークケーブルやWi-Fiを経由するため、予期せぬトラブルが起こりがちです。特に「タイムアウト」といって、相手からの返事が遅すぎて待つのを諦めるような事態も起こります。HttpClientにはタイムアウト時間を設定する機能があるので、これを利用してプログラムをより頑丈にしましょう。


client.Timeout = TimeSpan.FromSeconds(10); // 10秒待っても返事がなければ諦める
try 
{
    var response = await client.GetAsync(url);
}
catch (HttpRequestException e)
{
    Console.WriteLine("ネットワークに接続できませんでした。");
}

このように、try-catch(トライキャッチ)という仕組みを使って、エラーが起きたときの対応も書いておくことで、パソコンの初心者でも安心して使えるソフトになります。

カテゴリの一覧へ
新着記事
New1
C#
C#とは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
New2
C#
C#のメソッドを引数に渡す方法!高階関数の基本を学ぼう
New3
Azure
Azure Front Door Analytics活用|リアルタイム監視とレポートで通信を分析
New4
COBOL
COBOLで数値比較とALPHABETIC・NUMERIC条件をやさしく解説!初心者でも安心ガイド
人気記事
No.1
Java&Spring記事人気No1
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.2
Java&Spring記事人気No2
COBOL
COBOL教育における教材とリソース完全ガイド!初心者でもわかるプログラミング学習の選び方
No.3
Java&Spring記事人気No3
Azure
Azure SQL Database購入モデル比較!vCoreとDTUの違いと選び方を初心者向けに解説
No.4
Java&Spring記事人気No4
C#
C#のLINQでWhere句を使いこなす!初心者でもわかるデータ抽出とフィルタリング
No.5
Java&Spring記事人気No5
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.8
Java&Spring記事人気No8
C#
C#のforeachループを完全ガイド!初心者でもわかるコレクション操作の基本