HttpClientHandler クラス

定義

.NET Framework および .NET Core 2.0 以前の HttpClient で使用される既定のメッセージ ハンドラー。

public ref class HttpClientHandler : System::Net::Http::HttpMessageHandler
public class HttpClientHandler : System.Net.Http.HttpMessageHandler
type HttpClientHandler = class
    inherit HttpMessageHandler
Public Class HttpClientHandler
Inherits HttpMessageHandler
継承
HttpClientHandler
派生

static async Task Main()
{
   // Create an HttpClientHandler object and set to use default credentials
   HttpClientHandler handler = new HttpClientHandler();
   handler.UseDefaultCredentials = true;

   // Create an HttpClient object
   HttpClient client = new HttpClient(handler);

   // Call asynchronous network methods in a try/catch block to handle exceptions
   try
   {
      HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");

      response.EnsureSuccessStatusCode();

      string responseBody = await response.Content.ReadAsStringAsync();
      Console.WriteLine(responseBody);
   }
   catch(HttpRequestException e)
   {
       Console.WriteLine("\nException Caught!");
       Console.WriteLine("Message :{0} ",e.Message);
   }

   // Need to call dispose on the HttpClient and HttpClientHandler objects
   // when done using them, so the app doesn't leak resources
   handler.Dispose();
   client.Dispose();
}

前のコード例では、エントリ ポイントを async Task Main() 使用しています。 この機能には C# 7.1 以降が必要です。

注釈

そこから派生したクラスを使用すると、開発者は HttpClientHandler プロキシから認証まで、さまざまなオプションを構成できます。

.NET Core の HttpClientHandler

.NET Core 2.1 以降、クラスの HttpClientHandler 実装は、クラスで System.Net.Http.SocketsHttpHandler 使用されるクロスプラットフォーム HTTP プロトコル スタックに基づいて変更されました。 .NET Core 2.1 より前のHttpClientHandlerクラスでは、古い HTTP プロトコル スタック (WinHttpHandlerWindowsおよび CurlHandlerLinux 上の Linux のネイティブ libcurl コンポーネントの上に実装された内部クラス) が使用されました。

.NET Core 2.1 から 3.1 の場合のみ、次の 3 つの方法のいずれかで古い HTTP プロトコル スタックを使用するようにアプリを構成できます。

  • メソッドを呼び出します AppContext.SetSwitch

    AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
    
    AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", False)
    
  • System.Net.Http.UseSocketsHttpHandler .netcore.runtimeconfig.json 構成ファイルでスイッチを定義します。

    "runtimeOptions": {
      "configProperties": {
          "System.Net.Http.UseSocketsHttpHandler": false
      }
    }
    
  • 名前付きの DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 環境変数を定義し、いずれか false または 0 に設定します。

これらの構成オプションは、.NET 5 以降では使用できません。

コンストラクター

HttpClientHandler()

HttpClientHandler クラスのインスタンスを作成します。

プロパティ

AllowAutoRedirect

ハンドラーがリダイレクト応答に従うかどうかを示す値を取得または設定します。

AutomaticDecompression

HTTP コンテンツ応答を自動展開するためにハンドラーによって使用される展開メソッドの種類を取得または設定します。

CheckCertificateRevocationList

証明書が証明機関の失効リストに対して照合されるかどうかを示す値を取得または設定します。

ClientCertificateOptions

証明書を自動的に証明書ストアから取得するか、または呼び出し元が特定のクライアント証明書を渡すことを許可するかを示す値を、取得または設定します。

ClientCertificates

サーバーへの要求に関連付けられているセキュリティ証明書のコレクションを取得します。

CookieContainer

サーバーの Cookie を保存するためにハンドラーによって使用されるコンテナーを取得または設定します。

Credentials

このハンドラーで使用する認証情報を取得または設定します。

DangerousAcceptAnyServerCertificateValidator

常に true を返すキャッシュされたデリゲートを取得します。

DefaultProxyCredentials

既定の (システム) プロキシが使用されている場合、認証のために既定のプロキシ サーバーに送信するための資格情報を取得または設定します。 既定のプロキシは、UseProxytrue に設定され、Proxynull に設定されている場合にのみ使用されます。

MaxAutomaticRedirections

ハンドラーがフォローするリダイレクトの最大数を取得または設定します。

MaxConnectionsPerServer

ph x="1" /> オブジェクトを使用して要求を行うときに許可される (サーバー エンドポイントあたりの) コンカレント接続の最大数を取得または設定します。 サーバー エンドポイントあたりの制限に注意してください。たとえば、値 256 は http://www.adatum.com/ に対して 256 のコンカレント接続数を許可し、http://www.adventure-works.com/ に対してさらに 256 のコンカレント接続数を許可します。

MaxRequestContentBufferSize

ハンドラーによって使用される最大要求コンテンツ バッファー サイズを取得または設定します。

MaxResponseHeadersLength

応答ヘッダーの最大長 (KB 単位、1 KB = 1024 バイト) を取得または設定します。 たとえば、値が 64 の場合、応答ヘッダーの最大長に 65536 バイトが許可されます。

PreAuthenticate

ハンドラーが要求と共に認証ヘッダーを送信するかどうかを示す値を取得または設定します。

Properties

HttpClient 要求のカスタム プロパティの書き込み可能なディクショナリ (マップ) を取得します。 ディクショナリが初期化されて空になると、カスタム ハンドラーと特殊な処理のキーと値のペアを挿入してクエリを実行できます。

Proxy

ハンドラーで使用するプロキシ情報を取得または設定します。

ServerCertificateCustomValidationCallback

サーバー証明書を検証するコールバック メソッドを取得または設定します。

SslProtocols

HttpClientHandler オブジェクトによって管理される HttpClient オブジェクトが使用する TLS/SSL プロトコルを取得または設定します。

SupportsAutomaticDecompression

ハンドラーが自動応答のコンテンツ展開をサポートするかどうかを示す値を取得します。

SupportsProxy

ハンドルがプロキシ設定をサポートしているかどうかを示す値を取得します。

SupportsRedirectConfiguration

ハンドラーが AllowAutoRedirect および MaxAutomaticRedirections プロパティの構成設定をサポートするかどうかを示す値を取得します。

UseCookies

ハンドラーが CookieContainer プロパティを使用してサーバーの Cookie を保存し、要求の送信時にそれらの Cookie を使用するかどうかを示す値を取得または設定します。

UseDefaultCredentials

既定の資格情報がハンドラーによる要求と共に送信されるかどうかを制御する値を取得または設定します。

UseProxy

ハンドラーが要求のプロキシを使用するかどうかを示す値を取得または設定します。

メソッド

Dispose()

HttpMessageHandler が使用しているアンマネージド リソースを解放し、マネージド リソースを破棄します。

(継承元 HttpMessageHandler)
Dispose(Boolean)

HttpClientHandler が使用しているアンマネージド リソースを解放します。オプションとして、マネージド リソースを破棄することもできます。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
Send(HttpRequestMessage, CancellationToken)

HttpRequestMessage で指定された情報に基づいて HttpResponseMessage のインスタンスを作成します。

Send(HttpRequestMessage, CancellationToken)

派生クラスでオーバーライドされた場合は、指定した要求とキャンセル トークンを使用して HTTP 要求を送信します。 それ以外の場合は、NotSupportedException をスローします。

(継承元 HttpMessageHandler)
SendAsync(HttpRequestMessage, CancellationToken)

HttpRequestMessage で提供される情報に基づいて、ブロックしない操作として HttpResponseMessage のインスタンスを作成します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください