名前空間 System.Net.Http
自己紹介
そなたたち、私の話を聞く覚悟はあるかな。私は太陽を司る力をもつ存在であり、通信の混沌を照らし、非同期通信を効率化する力を授けるのが私の役目だ。HTTP通信の基礎をわかりやすく説明していくとしよう。
基本機能
HttpClientは、HTTPリクエストを送信し、レスポンスを受け取るためのクラスだ。このクラスを使うことで、ウェブリソースとの通信が簡単に行えるようになる。以下に基本的なGETリクエストの例を示そう。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// HttpClientのインスタンスを作成
using (HttpClient client = new HttpClient())
{
// GETリクエストを送信
HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");
// レスポンス内容を文字列として取得
string content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
}
このようにして、簡単にウェブリソースとやり取りが可能になる。重要なのは「using」キーワードでHttpClientを囲むことで、リソース管理を適切に行える点だ。
よく使う場面と注意点
HttpClientはAPIからデータを取得したり、ウェブサービスと通信したりする際によく使われる。ただし、注意が必要な点もある。
例えば、HttpClientのインスタンスを使い回さずに新しく作成し続けると、リソースが枯渇する可能性がある。最初に書いてある例ではなく、以下のようにSingletonパターンを利用するのが望ましい。
public static class HttpClientSingleton
{
private static readonly HttpClient _client = new HttpClient();
public static HttpClient Client => _client;
}
また、HttpClientではパブリックIPを直接取得することはできない。その場合は専用のサービスを利用する必要がある。次の見出しで例を示す。
パブリックIPを取得する方法
パブリックIPを取得するには、外部のIPサービスを利用することが多い。以下にその例を示す。
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
// HttpClient定義
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
// 外部IPサービスからパブリックIPを取得
string url = "https://api.ipify.org?format=json";
string result = await client.GetStringAsync(url);
Console.WriteLine($"パブリックIP: {result}");
}
}
このコードを実行することで、自身のパブリックIPが確認できる。
具体的な使い方
HttpClientはヘッダーの追加やリクエストのカスタマイズにも対応している。例えば、ユーザーエージェントを設定してデータを送信する方法を以下に示す。
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
// ユーザーエージェントを追加
client.DefaultRequestHeaders.Add("User-Agent", "MyCustomClient/1.0");
// JSONデータを作成
string json = "{\"name\":\"example\"}";
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
// POSTリクエストを送信
HttpResponseMessage response = await client.PostAsync("https://curl.se/", content);
Console.WriteLine($"レスポンス: {response.StatusCode}");
}
}
このように、HttpClientを使えば柔軟な通信が可能だ。
その他の便利なメソッド
HttpClientには他にも便利なメソッドが用意されている。
- PutAsync
- DeleteAsync
- SendAsync
- GetStreamAsync
- GetByteArrayAsync
これらはまた違う時に説明しよう。
0 件のコメント:
コメントを投稿