.NETヘルプ C# HttpClient(開発者向けの仕組み) Jacob Mellor 更新日:2025年6月22日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る このHttpClientクラスは、.NET Frameworkの一部で、URI によって識別されるリソースから HTTP リクエストを送信し、HTTP レスポンスを受信する手段を提供します。 これは、GET、POST、PUT、DELETE リクエストのいずれかを実行している場合でも、HTTP リクエストの呼び出しを簡素化します。 このガイドでは、実用的なシナリオでのHttpClientの基本的な使い方をカバーし、IronPDFライブラリを紹介します。 新しいHttpClientインスタンスの作成 HttpClientクラスはHTTPリクエストを送信するために使用されます。 次のように新しいインスタンスを作成できます: using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using var client = new HttpClient(); // Create a new instance of HttpClient // Send a GET request to the specified URI and store the HTTP response var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=London"); // Retrieve the response content as a string var responseBody = await response.Content.ReadAsStringAsync(); // Print the response content to the console Console.WriteLine(responseBody); } } using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using var client = new HttpClient(); // Create a new instance of HttpClient // Send a GET request to the specified URI and store the HTTP response var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=London"); // Retrieve the response content as a string var responseBody = await response.Content.ReadAsStringAsync(); // Print the response content to the console Console.WriteLine(responseBody); } } $vbLabelText $csharpLabel この例では: var client = new HttpClient() を使用して新しい HttpClient インスタンスが作成されます。 HTTP GET リクエストは GetAsync メソッドを使用して送信されます。 HttpResponseMessage は var response に格納されます。 応答の内容は response.Content.ReadAsStringAsync() を使用して取得されます。 HTTPリクエストの送信 HTTP GET リクエスト HTTP GET リクエストを行い、レスポンスを処理するには: using System; using System.Net.Http; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Paris"); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } } using System; using System.Net.Http; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Paris"); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } } $vbLabelText $csharpLabel IsSuccessStatusCode プロパティは、要求が成功したことを確認します。 レスポンス本体はReadAsStringAsync()で非同期的に読み取られます。 HTTP POST リクエスト POSTリクエストを送信するにはリクエストボディを追加する必要があります: using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var requestBody = new StringContent("{ \"location\": \"New York\" }", Encoding.UTF8, "application/json"); // Send the POST request with the specified body var response = await client.PostAsync("https://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY", requestBody); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } } using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var requestBody = new StringContent("{ \"location\": \"New York\" }", Encoding.UTF8, "application/json"); // Send the POST request with the specified body var response = await client.PostAsync("https://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY", requestBody); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } } $vbLabelText $csharpLabel PostAsync は指定された本文 (requestBody) を含むリクエストを送信します。 コンテンツタイプを指定する必要があります(application/json)。 HTTP PUT リクエスト HTTP PUT リクエストはリソースを更新します: using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var requestBody = new StringContent("{ \"location\": \"Tokyo\", \"days\": 3 }", Encoding.UTF8, "application/json"); // Send a PUT request to update the resource var response = await client.PutAsync("https://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY", requestBody); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } } using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var requestBody = new StringContent("{ \"location\": \"Tokyo\", \"days\": 3 }", Encoding.UTF8, "application/json"); // Send a PUT request to update the resource var response = await client.PutAsync("https://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY", requestBody); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } } $vbLabelText $csharpLabel PutAsync は、指定された URI のリソースを更新するための PUT 要求を送信します。 リクエストボディには通常、更新されるデータが含まれています。 HTTP DELETE リクエスト HTTP DELETE リクエストを送信するには: using System; using System.Net.Http; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); // Send a DELETE request to remove the resource var response = await client.DeleteAsync("https://api.weatherapi.com/v1/locations/1?key=YOUR_API_KEY"); // Check if the request was successful if (response.IsSuccessStatusCode) { Console.WriteLine("Resource deleted successfully"); } } } using System; using System.Net.Http; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); // Send a DELETE request to remove the resource var response = await client.DeleteAsync("https://api.weatherapi.com/v1/locations/1?key=YOUR_API_KEY"); // Check if the request was successful if (response.IsSuccessStatusCode) { Console.WriteLine("Resource deleted successfully"); } } } $vbLabelText $csharpLabel DeleteAsync はリソースを削除するための DELETE 要求を送信します。 HTTP レスポンスの処理 各 HTTP リクエストは、レスポンスボディ、ヘッダー、ステータスコードを含むHttpResponseMessageオブジェクトを返します。 例えば: using System; using System.Net.Http; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Sydney"); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } } using System; using System.Net.Http; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Sydney"); // Check if the request was successful if (response.IsSuccessStatusCode) { var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } } $vbLabelText $csharpLabel Response.StatusCode はステータス コード (例: 200、404) を提供します。 response.Content にはレスポンス本体が含まれており、ReadAsStringAsync() を使用して非同期的に読み取ることができます。 HttpClientの効率的な使用法 HttpClient インスタンスは、接続プールを活用してシステムリソースの枯渇を避けるために再利用すべきです。 通常のパターンは、アプリケーションまたはサービスのライフタイムにわたって単一の HttpClient インスタンスを作成することです。 これは、静的な変数を使用するか、Web アプリケーション用に依存性注入を使用して行うことができます。 静的HttpClientの例 public static class HttpClientProvider { private static readonly HttpClient client = new HttpClient(); public static HttpClient Client => client; } public static class HttpClientProvider { private static readonly HttpClient client = new HttpClient(); public static HttpClient Client => client; } $vbLabelText $csharpLabel HttpClient インスタンスはアプリケーション全体で再利用され、新しい HTTP 接続の作成に費やされるオーバーヘッドを減少させます。 依存性注入を使用したHttpClientの使用 Web アプリケーションでは、HttpClient をシングルトンサービスとして登録するのが推奨される方法です: public void ConfigureServices(IServiceCollection services) { services.AddHttpClient(); } public void ConfigureServices(IServiceCollection services) { services.AddHttpClient(); } $vbLabelText $csharpLabel より具体的な構成のために、名前付きクライアントと型付きクライアントを作成することもできます。 接続プールとプロキシ設定 HttpClientのインスタンスを再利用することで、同じサーバーへの複数のリクエストのパフォーマンスを向上させる接続プールの利点が得られます。 また、HttpClientHandler クラスを使用してプロキシ設定を構成することもできます: using System.Net; using System.Net.Http; var handler = new HttpClientHandler { Proxy = new WebProxy("http://proxyserver:port"), // Set the proxy server UseProxy = true }; var client = new HttpClient(handler); using System.Net; using System.Net.Http; var handler = new HttpClientHandler { Proxy = new WebProxy("http://proxyserver:port"), // Set the proxy server UseProxy = true }; var client = new HttpClient(handler); $vbLabelText $csharpLabel エラーハンドリングとステータスコード 異なる HTTP ステータスコードを処理するには、HttpResponseMessage.StatusCode プロパティを確認します: using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; async Task MakeRequestAsync() { try { using var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Berlin"); // Handle the response based on the status code switch (response.StatusCode) { case HttpStatusCode.OK: Console.WriteLine("Success"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response content: {content}"); break; case HttpStatusCode.NotFound: Console.WriteLine("Resource not found"); break; case HttpStatusCode.Unauthorized: Console.WriteLine("Unauthorized access"); break; case HttpStatusCode.InternalServerError: Console.WriteLine("Server error occurred"); break; default: Console.WriteLine($"Unexpected status code: {response.StatusCode}"); break; } } catch (HttpRequestException e) { Console.WriteLine($"Request error: {e.Message}"); } catch (Exception e) { Console.WriteLine($"An error occurred: {e.Message}"); } } using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; async Task MakeRequestAsync() { try { using var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=Berlin"); // Handle the response based on the status code switch (response.StatusCode) { case HttpStatusCode.OK: Console.WriteLine("Success"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response content: {content}"); break; case HttpStatusCode.NotFound: Console.WriteLine("Resource not found"); break; case HttpStatusCode.Unauthorized: Console.WriteLine("Unauthorized access"); break; case HttpStatusCode.InternalServerError: Console.WriteLine("Server error occurred"); break; default: Console.WriteLine($"Unexpected status code: {response.StatusCode}"); break; } } catch (HttpRequestException e) { Console.WriteLine($"Request error: {e.Message}"); } catch (Exception e) { Console.WriteLine($"An error occurred: {e.Message}"); } } $vbLabelText $csharpLabel JSON レスポンスボディの取り扱い JSON レスポンスを扱うことが多いです。 レスポンス内容を強く型付けされたオブジェクトにデシリアライズできます: using System; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=London"); var jsonString = await response.Content.ReadAsStringAsync(); // Deserialize the JSON response into a WeatherResponse object var weatherResponse = JsonSerializer.Deserialize<WeatherResponse>(jsonString); Console.WriteLine($"Location: {weatherResponse.Location}, Temperature: {weatherResponse.Temperature}"); } } public class WeatherResponse { public string Location { get; set; } public double Temperature { get; set; } } using System; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; class Example { static async Task Main(string[] args) { var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=London"); var jsonString = await response.Content.ReadAsStringAsync(); // Deserialize the JSON response into a WeatherResponse object var weatherResponse = JsonSerializer.Deserialize<WeatherResponse>(jsonString); Console.WriteLine($"Location: {weatherResponse.Location}, Temperature: {weatherResponse.Temperature}"); } } public class WeatherResponse { public string Location { get; set; } public double Temperature { get; set; } } $vbLabelText $csharpLabel ReadAsStringAsync() メソッドは、JSON コンテンツを C# オブジェクトに直接読み取ることを簡素化します。 IronPDFの紹介 IronPDF は、C#で PDF ファイルを作成、操作、および変換するために設計された .NET PDF ライブラリです。 これは、HTML、CSS、JavaScript、およびその他の形式から高品質のPDFを生成するために広く使用されています。 IronPDFは、HTMLからPDFへの変換、PDFのマージ、透かし付け、さらにはデジタル署名やPDF暗号化のような高度な操作などの機能を提供します。 Windows、Linux、macOSなどのさまざまなプラットフォームと互換性があり、クロスプラットフォーム開発において多用途のソリューションとなっています。 IronPDFとHttpClientの使用 IronPDFをC#のHttpClientクラスと組み合わせることで、WebリソースからPDFドキュメントを動的に生成および操作する効果的な方法となります。 たとえば、HttpClientを介してURLからHTMLコンテンツを取得し、このHTMLをIronPDFでPDFドキュメントに変換できます。 これは、ライブWebコンテンツに基づいてレポート、請求書、または任意のドキュメントを動的に生成する場合に便利です。 using System; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; using IronPdf; class Program { static async Task Main(string[] args) { License.LicenseKey = "YOUR_LICENSE_KEY"; // Set your IronPDF license key using var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY&q=London&days=3"); // Check if the request was successful if (response.IsSuccessStatusCode) { var jsonContent = await response.Content.ReadAsStringAsync(); var jsonElement = JsonSerializer.Deserialize<JsonElement>(jsonContent); // Format the JSON content for pretty-printing var formattedJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true }); // Escape the JSON for HTML formattedJson = System.Web.HttpUtility.HtmlEncode(formattedJson); // Create an HTML string for PDF generation var htmlContent = $@" <html> <head> <style> body {{ font-family: Arial, sans-serif; }} pre {{ background-color: #f4f4f4; padding: 20px; border-radius: 5px; white-space: pre-wrap; word-wrap: break-word; }} </style> </head> <body> <h1>Weather Forecast (JSON Data)</h1> <pre>{formattedJson}</pre> </body> </html>"; // Generate the PDF from the HTML content var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); // Save the PDF to a file pdf.SaveAs("F://weather_report.pdf"); Console.WriteLine("PDF generated successfully!"); } else { Console.WriteLine($"Failed to retrieve content. Status code: {response.StatusCode}"); } } } using System; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; using IronPdf; class Program { static async Task Main(string[] args) { License.LicenseKey = "YOUR_LICENSE_KEY"; // Set your IronPDF license key using var client = new HttpClient(); var response = await client.GetAsync("https://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY&q=London&days=3"); // Check if the request was successful if (response.IsSuccessStatusCode) { var jsonContent = await response.Content.ReadAsStringAsync(); var jsonElement = JsonSerializer.Deserialize<JsonElement>(jsonContent); // Format the JSON content for pretty-printing var formattedJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true }); // Escape the JSON for HTML formattedJson = System.Web.HttpUtility.HtmlEncode(formattedJson); // Create an HTML string for PDF generation var htmlContent = $@" <html> <head> <style> body {{ font-family: Arial, sans-serif; }} pre {{ background-color: #f4f4f4; padding: 20px; border-radius: 5px; white-space: pre-wrap; word-wrap: break-word; }} </style> </head> <body> <h1>Weather Forecast (JSON Data)</h1> <pre>{formattedJson}</pre> </body> </html>"; // Generate the PDF from the HTML content var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); // Save the PDF to a file pdf.SaveAs("F://weather_report.pdf"); Console.WriteLine("PDF generated successfully!"); } else { Console.WriteLine($"Failed to retrieve content. Status code: {response.StatusCode}"); } } } $vbLabelText $csharpLabel 実際の天気 API を使用する際には、"YOUR_API_KEY"をAPIキーに置き換えることを忘れないでください。 結論 このチュートリアルでは、C# で HttpClient クラスを使用して HTTP リクエストを送信し、レスポンスを処理する方法を探りました。 また、.NET アプリケーションでの PDF 生成に強力なライブラリである IronPDF を紹介しました。 私たちは、HttpClientを使用してWebサービスからHTMLコンテンツを取得し、それをIronPDFを使用してPDFに変換することで、これらの技術を統合する方法を示しました。 IronPDF は無料トライアルを提供しており、ライセンスは $799 から始まるため、包括的な PDF 生成機能を求める開発者にとって貴重なツールとなります。 よくある質問 C# で HTML コンテンツを PDF に変換するにはどうすればいいですか? IronPDF を使用して、RenderHtmlAsPdf などのメソッドを利用することで HTML コンテンツを PDF に変換できます。これにより、CSS や JavaScript と共に HTML 文字列を簡単にプロフェッショナルな PDF ドキュメントに変換できます。 C# で HttpClient と PDF 生成を組み合わせるにはどうすればいいですか? HttpClient を IronPDF と統合することで、Web リソースから HTML コンテンツを取得し、そのコンテンツを IronPDF の変換メソッドを使用して PDF ドキュメントに変換できます。これはリアルタイムデータからレポートや請求書を作成するのに特に便利です。 HttpClient インスタンスを再利用することの重要性は何ですか? HttpClient インスタンスを再利用することは、効率的なリソース管理にとって重要です。これにより、接続プーリングを利用し、各リクエストごとに新しい接続を作成するオーバーヘッドを最小限に抑えることで、アプリケーションのパフォーマンスが向上します。 C# で JSON 応答をどのようにデシリアライズすることができますか? C# では、JsonSerializer クラスを使用して JSON 応答をデシリアライズできます。応答コンテンツを文字列として取得した後、JsonSerializer.Deserialize を使用して、それを強く型付けされた C# オブジェクトに変換できます。 C# で HTTP ステータス コードを処理するためのベスト プラクティスは何ですか? C# で HTTP ステータス コードを処理するには、HttpResponseMessage の StatusCode プロパティをチェックします。HttpStatusCode.OK や HttpStatusCode.NotFound などの特定のコードを管理するために、条件文を使用して適切なエラー処理を実装します。 IronPDF はどのようにして .NET アプリケーションに PDF 機能を強化しますか? IronPDF は、PDF ファイルの作成、操作、変換のための強力なツールを提供し、.NET アプリケーションを強化します。HTML、CSS、および JavaScript からの高品質な PDF 生成をサポートし、開発者が動的なドキュメントを簡単に作成できるようにします。 PDF 変換のために HttpClient を使用して HTML コンテンツを取得できますか? はい、HttpClient は Web リソースから HTML コンテンツを取得し、それを IronPDF を使用して PDF に変換できます。このアプローチは、ライブ Web データや動的コンテンツから PDF を生成するのに最適です。 C# で HttpClient のプロキシ設定を構成するにはどうすればいいですか? HttpClient のプロキシ設定を構成するには、HttpClientHandler クラスを使用します。Proxy プロパティに WebProxy インスタンスを設定し、HttpClient インスタンスを作成するときに UseProxy オプションを有効にします。 Jacob Mellor 今すぐエンジニアリングチームとチャット 最高技術責任者(CTO) ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。 関連する記事 更新日 2026年2月20日 CLIの簡素化と.NETの橋渡し:Curl DotNetとIronPDFを使う Jacob Mellorは、.NETエコシステムにcURLの親しみやすさをもたらすために作成されたライブラリ、CurlDotNetでこのギャップを埋めました。 詳しく読む 更新日 2025年12月20日 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 2025年12月20日 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む C# AES暗号化(開発者向けの仕組み)C# Discriminated Union(開発者...
更新日 2026年2月20日 CLIの簡素化と.NETの橋渡し:Curl DotNetとIronPDFを使う Jacob Mellorは、.NETエコシステムにcURLの親しみやすさをもたらすために作成されたライブラリ、CurlDotNetでこのギャップを埋めました。 詳しく読む
更新日 2025年12月20日 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 2025年12月20日 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む