HttpClient HttpClient HttpClient HttpClient Class

定義

URI で識別されるリソースに HTTP 要求を送信し、そのリソースから HTTP 応答を受信するための基本クラスを提供します。 Provides a base class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.

public ref class HttpClient : System::Net::Http::HttpMessageInvoker
public class HttpClient : System.Net.Http.HttpMessageInvoker
type HttpClient = class
    inherit HttpMessageInvoker
Public Class HttpClient
Inherits HttpMessageInvoker
継承

static async Task Main()
{
   // Create a New HttpClient object.
   HttpClient client = new HttpClient();
 
   // 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();
      // Above three lines can be replaced with new helper method below
      // string responseBody = await client.GetStringAsync(uri);

      Console.WriteLine(responseBody);
   }  
   catch(HttpRequestException e)
   {
      Console.WriteLine("\nException Caught!");	
      Console.WriteLine("Message :{0} ",e.Message);
   }

   // Need to call dispose on the HttpClient object
   // when done using it, so the app doesn't leak resources
   client.Dispose(true);
}

上記のコード例では、async Task Main()エントリ ポイント。The preceding code example uses an async Task Main() entry point. C# 7.1 以降その機能が必要です。That feature requires C# 7.1 or later.

注釈

HttpClientクラスのインスタンスは HTTP 要求を送信するセッションとして機能します。The HttpClient class instance acts as a session to send HTTP requests. HttpClientインスタンスがそのインスタンスで実行されるすべての要求に適用する設定のコレクション。An HttpClient instance is a collection of settings applied to all requests executed by that instance. さらに、すべてHttpClientインスタンスが他に実行される要求からの要求を分離する、独自の接続プールを使用してHttpClientインスタンス。In addition, every HttpClient instance uses its own connection pool, isolating its requests from requests executed by other HttpClient instances.

HttpClientより特定の HTTP クライアントの基本クラスとしても機能します。The HttpClient also acts as a base class for more specific HTTP clients. 例として、FacebookHttpClient、Facebook web サービスに固有の追加のメソッドを提供することがあります (GetFriends メソッドでは、たとえば)。An example would be a FacebookHttpClient providing additional methods specific to a Facebook web service (a GetFriends method, for instance). 派生クラスでは、クラスの仮想メソッドをオーバーライドしないでください。Derived classes should not override the virtual methods on the class. 受け取るコンス トラクター オーバー ロードを使用して、代わりに、HttpMessageHandler処理前または後の要求の処理代わりに構成します。Instead, use a constructor overload that accepts HttpMessageHandler to configure any pre- or post-request processing instead.

既定では、.NET Framework、Mono、HttpWebRequestサーバーに要求を送信するために使用します。By default on .NET Framework and Mono, HttpWebRequest is used to send requests to the server. 取るコンス トラクターのオーバー ロードのいずれかで異なるチャネルを指定することで、この動作を変更できる、HttpMessageHandlerパラメーターとしてのインスタンス。This behavior can be modified by specifying a different channel in one of the constructor overloads taking a HttpMessageHandler instance as parameter. 認証またはキャッシュなどの機能が必要な場合、WebRequestHandler設定を構成するために使用することができますし、コンス トラクターに渡されるインスタンスのことができます。If features like authentication or caching are required, WebRequestHandler can be used to configure settings and the instance can be passed to the constructor. 返されたハンドラーを取るコンス トラクターのオーバー ロードのいずれかに渡すことができます、HttpMessageHandlerパラメーター。The returned handler can be passed to one of the constructor overloads taking a HttpMessageHandler parameter.

アプリを使用して、場合HttpClientおよび関連クラス、System.Net.Http名前空間が、大量のデータ (50 メガバイトまたはそれ以上) をダウンロードしようとしています。 その後、アプリのダウンロードのストリームと既定のバッファリングを使用しない必要があります。If an app using HttpClient and related classes in the System.Net.Http namespace intends to download large amounts of data (50 megabytes or more), then the app should stream those downloads and not use the default buffering. 既定のバッファリングを使用する場合は、クライアントのメモリ使用量が非常に大きな取得、パフォーマンスが低下するためになる可能性があります。If the default buffering is used the client memory usage will get very large, potentially resulting in substantially reduced performance.

次の方法では、スレッド セーフであるがあります。The following methods are thread safe:

  1. CancelPendingRequests

  2. DeleteAsync

  3. GetAsync

  4. GetByteArrayAsync

  5. GetStreamAsync

  6. GetStringAsync

  7. PostAsync

  8. PutAsync

  9. SendAsync

HttpClient 1 回インスタンス化し、アプリケーションの有効期間にわたって再利用するためのものです。HttpClient is intended to be instantiated once and re-used throughout the life of an application. すべての要求に対して、HttpClient クラスをインスタンス化すると、負荷の下で使用可能なソケットの数は使い果たしてしまいます。Instantiating an HttpClient class for every request will exhaust the number of sockets available under heavy loads. SocketException エラーが発生します。This will result in SocketException errors. HttpClient を正しく使用する例を次に示します。Below is an example using HttpClient correctly.

public class GoodController : ApiController
{
    // OK
    private static readonly HttpClient HttpClient;

    static GoodController()
    {
        HttpClient = new HttpClient();
    }
}

HttpClientはこれを実行して各プラットフォームで使用可能な下位レベルの機能をラップする高度な API です。The HttpClient is a high-level API that wraps the lower-level functionality available on each platform where it runs.

各プラットフォームのHttpClient最適使用可能なトランスポートを使用しようとしています。On each platform, HttpClient tries to use the best available transport:

ホスト/ランタイムHost/Runtime バックエンドBackend
Windows と .NET FrameworkWindows/.NET Framework HttpWebRequest
Windows/MonoWindows/Mono HttpWebRequest
Windows/UWPWindows/UWP Windows ネイティブWinHttpHandler(HTTP 2.0 対応)Windows native WinHttpHandler (HTTP 2.0 capable)
Windows と .NET CoreWindows/.NET Core Windows ネイティブWinHttpHandler(HTTP 2.0 対応)Windows native WinHttpHandler (HTTP 2.0 capable)
Android と XamarinAndroid/Xamarin ビルド時に選択します。Selected at build-time. 使用するかHttpWebRequestか Android のネイティブを使用して構成します。 HttpURLConnectionCan either use HttpWebRequest or be configured to use Android's native HttpURLConnection
iOS、tvOS、watchOS/XamariniOS, tvOS, watchOS/Xamarin ビルド時に選択します。Selected at build-time. 使用するかHttpWebRequestApple を使用するように構成または NSUrlSession (HTTP 2.0 対応)Can either use HttpWebRequest or be configured to use Apple's NSUrlSession (HTTP 2.0 capable)
macOS/XamarinmacOS/Xamarin ビルド時に選択します。Selected at build-time. 使用するかHttpWebRequestApple を使用するように構成または NSUrlSession (HTTP 2.0 対応)Can either use HttpWebRequest or be configured to use Apple's NSUrlSession (HTTP 2.0 capable)
macOS/MonomacOS/Mono HttpWebRequest
macOS と .NET CoremacOS/.NET Core libcurl-ベースの HTTP トランスポート (HTTP 2.0 対応)libcurl-based HTTP transport (HTTP 2.0 capable)
Linux/MonoLinux/Mono HttpWebRequest
Linux と .NET CoreLinux/.NET Core libcurl-ベースの HTTP トランスポート (HTTP 2.0 対応)libcurl-based HTTP transport (HTTP 2.0 capable)

ユーザーが特定のトランスポートを構成できますもHttpClientを呼び出すことによって、HttpClientを受け取るコンス トラクター、HttpMessageHandlerします。Users can also configure a specific transport for HttpClient by invoking the HttpClient constructor that takes an HttpMessageHandler.

HttpClient および .NET CoreHttpClient and .NET Core

.NET Core 2.1 では、以降、System.Net.Http.SocketsHttpHandlerクラスの代わりにHttpClientHandlerなどの上位レベルの HTTP ネットワーク クラスで使用される実装を提供しますHttpClientします。Starting with .NET Core 2.1, the System.Net.Http.SocketsHttpHandler class instead of HttpClientHandler provides the implementation used by higher-level HTTP networking classes such as HttpClient. 旧バージョンを使用するアプリケーションを構成するSystem.Net.Http.HttpClientHandler代わりに呼び出すことによって、SetSwitchメソッドとして、次のとおりです。You can configure your application to use the older System.Net.Http.HttpClientHandler instead by calling the SetSwitch method as follows:

AppContext.SetSwitch("System.Net.Http.useSocketsHttpHandler", false);
AppContext.SetSwitch("System.Net.Http.useSocketsHttpHandler", False)

コンストラクター

HttpClient() HttpClient() HttpClient() HttpClient()

HttpClient クラスの新しいインスタンスを初期化します。 Initializes a new instance of the HttpClient class.

HttpClient(HttpMessageHandler) HttpClient(HttpMessageHandler) HttpClient(HttpMessageHandler) HttpClient(HttpMessageHandler)

指定したハンドラーを使用して、HttpClient クラスの新しいインスタンスを初期化します。 Initializes a new instance of the HttpClient class with a specific handler.

HttpClient(HttpMessageHandler, Boolean) HttpClient(HttpMessageHandler, Boolean) HttpClient(HttpMessageHandler, Boolean) HttpClient(HttpMessageHandler, Boolean)

指定したハンドラーを使用して、HttpClient クラスの新しいインスタンスを初期化します。 Initializes a new instance of the HttpClient class with a specific handler.

プロパティ

BaseAddress BaseAddress BaseAddress BaseAddress

要求を送信するときに使用する、インターネット リソースの Uniform Resource Identifier (URI) のベース アドレスを取得または設定します。 Gets or sets the base address of Uniform Resource Identifier (URI) of the Internet resource used when sending requests.

DefaultRequestHeaders DefaultRequestHeaders DefaultRequestHeaders DefaultRequestHeaders

各要求と一緒に送信する必要があるヘッダーを取得します。 Gets the headers which should be sent with each request.

MaxResponseContentBufferSize MaxResponseContentBufferSize MaxResponseContentBufferSize MaxResponseContentBufferSize

応答の内容を読み取るときにバッファーに格納できる最大バイト数を取得または設定します。 Gets or sets the maximum number of bytes to buffer when reading the response content.

Timeout Timeout Timeout Timeout

要求がタイムアウトするまで待機する期間を取得または設定します。 Gets or sets the timespan to wait before the request times out.

方法

CancelPendingRequests() CancelPendingRequests() CancelPendingRequests() CancelPendingRequests()

このインスタンスの保留中の要求をすべてキャンセルします。 Cancel all pending requests on this instance.

DeleteAsync(String) DeleteAsync(String) DeleteAsync(String) DeleteAsync(String)

指定された URI に DELETE 要求を非同期操作として送信します。 Send a DELETE request to the specified Uri as an asynchronous operation.

DeleteAsync(String, CancellationToken) DeleteAsync(String, CancellationToken) DeleteAsync(String, CancellationToken) DeleteAsync(String, CancellationToken)

非同期操作としてキャンセル トークンを使用して削除要求を指定された Uri に送信します。 Send a DELETE request to the specified Uri with a cancellation token as an asynchronous operation.

DeleteAsync(Uri) DeleteAsync(Uri) DeleteAsync(Uri) DeleteAsync(Uri)

指定された URI に DELETE 要求を非同期操作として送信します。 Send a DELETE request to the specified Uri as an asynchronous operation.

DeleteAsync(Uri, CancellationToken) DeleteAsync(Uri, CancellationToken) DeleteAsync(Uri, CancellationToken) DeleteAsync(Uri, CancellationToken)

非同期操作としてキャンセル トークンを使用して削除要求を指定された Uri に送信します。 Send a DELETE request to the specified Uri with a cancellation token as an asynchronous operation.

Dispose() Dispose() Dispose() Dispose()

HttpMessageInvoker が使用しているアンマネージド リソースを解放し、マネージド リソースを破棄します。 Releases the unmanaged resources and disposes of the managed resources used by the HttpMessageInvoker.

(Inherited from HttpMessageInvoker)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

HttpClient が使用しているアンマネージド リソースを解放します。オプションとして、マネージド リソースを破棄することもできます。 Releases the unmanaged resources used by the HttpClient and optionally disposes of the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。 Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetAsync(String) GetAsync(String) GetAsync(String) GetAsync(String)

指定された URI に GET 要求を非同期操作として送信します。 Send a GET request to the specified Uri as an asynchronous operation.

GetAsync(String, CancellationToken) GetAsync(String, CancellationToken) GetAsync(String, CancellationToken) GetAsync(String, CancellationToken)

非同期操作としてキャンセル トークンを使用して GET 要求を指定された Uri に送信します。 Send a GET request to the specified Uri with a cancellation token as an asynchronous operation.

GetAsync(String, HttpCompletionOption) GetAsync(String, HttpCompletionOption) GetAsync(String, HttpCompletionOption) GetAsync(String, HttpCompletionOption)

非同期操作としてHTTP 完了オプションを使用して GET 要求を指定された Uri に送信します。 Send a GET request to the specified Uri with an HTTP completion option as an asynchronous operation.

GetAsync(String, HttpCompletionOption, CancellationToken) GetAsync(String, HttpCompletionOption, CancellationToken) GetAsync(String, HttpCompletionOption, CancellationToken) GetAsync(String, HttpCompletionOption, CancellationToken)

非同期操作としてキャンセル トークンおよび HTTP 完了オプションを使用して GET 要求を指定された Uri に送信します。 Send a GET request to the specified Uri with an HTTP completion option and a cancellation token as an asynchronous operation.

GetAsync(Uri) GetAsync(Uri) GetAsync(Uri) GetAsync(Uri)

指定された URI に GET 要求を非同期操作として送信します。 Send a GET request to the specified Uri as an asynchronous operation.

GetAsync(Uri, CancellationToken) GetAsync(Uri, CancellationToken) GetAsync(Uri, CancellationToken) GetAsync(Uri, CancellationToken)

非同期操作としてキャンセル トークンを使用して GET 要求を指定された Uri に送信します。 Send a GET request to the specified Uri with a cancellation token as an asynchronous operation.

GetAsync(Uri, HttpCompletionOption) GetAsync(Uri, HttpCompletionOption) GetAsync(Uri, HttpCompletionOption) GetAsync(Uri, HttpCompletionOption)

非同期操作としてHTTP 完了オプションを使用して GET 要求を指定された Uri に送信します。 Send a GET request to the specified Uri with an HTTP completion option as an asynchronous operation.

GetAsync(Uri, HttpCompletionOption, CancellationToken) GetAsync(Uri, HttpCompletionOption, CancellationToken) GetAsync(Uri, HttpCompletionOption, CancellationToken) GetAsync(Uri, HttpCompletionOption, CancellationToken)

非同期操作としてキャンセル トークンおよび HTTP 完了オプションを使用して GET 要求を指定された Uri に送信します。 Send a GET request to the specified Uri with an HTTP completion option and a cancellation token as an asynchronous operation.

GetByteArrayAsync(String) GetByteArrayAsync(String) GetByteArrayAsync(String) GetByteArrayAsync(String)

指定 URI に GET 要求を送信し、非同期操作で応答本体をバイト配列として返します。 Send a GET request to the specified Uri and return the response body as a byte array in an asynchronous operation.

GetByteArrayAsync(Uri) GetByteArrayAsync(Uri) GetByteArrayAsync(Uri) GetByteArrayAsync(Uri)

指定 URI に GET 要求を送信し、非同期操作で応答本体をバイト配列として返します。 Send a GET request to the specified Uri and return the response body as a byte array in an asynchronous operation.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。 Serves as the default hash function.

(Inherited from Object)
GetStreamAsync(String) GetStreamAsync(String) GetStreamAsync(String) GetStreamAsync(String)

指定 URI に GET 要求を送信し、非同期操作で応答本体をストリームとして返します。 Send a GET request to the specified Uri and return the response body as a stream in an asynchronous operation.

GetStreamAsync(Uri) GetStreamAsync(Uri) GetStreamAsync(Uri) GetStreamAsync(Uri)

指定 URI に GET 要求を送信し、非同期操作で応答本体をストリームとして返します。 Send a GET request to the specified Uri and return the response body as a stream in an asynchronous operation.

GetStringAsync(String) GetStringAsync(String) GetStringAsync(String) GetStringAsync(String)

指定 URI に GET 要求を送信し、非同期操作で応答本体を文字列として返します。 Send a GET request to the specified Uri and return the response body as a string in an asynchronous operation.

GetStringAsync(Uri) GetStringAsync(Uri) GetStringAsync(Uri) GetStringAsync(Uri)

指定 URI に GET 要求を送信し、非同期操作で応答本体を文字列として返します。 Send a GET request to the specified Uri and return the response body as a string in an asynchronous operation.

GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。 Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。 Creates a shallow copy of the current Object.

(Inherited from Object)
PatchAsync(String, HttpContent) PatchAsync(String, HttpContent) PatchAsync(String, HttpContent) PatchAsync(String, HttpContent)
PatchAsync(String, HttpContent, CancellationToken) PatchAsync(String, HttpContent, CancellationToken) PatchAsync(String, HttpContent, CancellationToken) PatchAsync(String, HttpContent, CancellationToken)
PatchAsync(Uri, HttpContent) PatchAsync(Uri, HttpContent) PatchAsync(Uri, HttpContent) PatchAsync(Uri, HttpContent)
PatchAsync(Uri, HttpContent, CancellationToken) PatchAsync(Uri, HttpContent, CancellationToken) PatchAsync(Uri, HttpContent, CancellationToken) PatchAsync(Uri, HttpContent, CancellationToken)
PostAsync(String, HttpContent) PostAsync(String, HttpContent) PostAsync(String, HttpContent) PostAsync(String, HttpContent)

指定された URI に POST 要求を非同期操作として送信します。 Send a POST request to the specified Uri as an asynchronous operation.

PostAsync(String, HttpContent, CancellationToken) PostAsync(String, HttpContent, CancellationToken) PostAsync(String, HttpContent, CancellationToken) PostAsync(String, HttpContent, CancellationToken)

POST 要求をキャンセル トークンとともに非同期操作として送信します。 Send a POST request with a cancellation token as an asynchronous operation.

PostAsync(Uri, HttpContent) PostAsync(Uri, HttpContent) PostAsync(Uri, HttpContent) PostAsync(Uri, HttpContent)

指定された URI に POST 要求を非同期操作として送信します。 Send a POST request to the specified Uri as an asynchronous operation.

PostAsync(Uri, HttpContent, CancellationToken) PostAsync(Uri, HttpContent, CancellationToken) PostAsync(Uri, HttpContent, CancellationToken) PostAsync(Uri, HttpContent, CancellationToken)

POST 要求をキャンセル トークンとともに非同期操作として送信します。 Send a POST request with a cancellation token as an asynchronous operation.

PutAsync(String, HttpContent) PutAsync(String, HttpContent) PutAsync(String, HttpContent) PutAsync(String, HttpContent)

指定された URI に PUT 要求を非同期操作として送信します。 Send a PUT request to the specified Uri as an asynchronous operation.

PutAsync(String, HttpContent, CancellationToken) PutAsync(String, HttpContent, CancellationToken) PutAsync(String, HttpContent, CancellationToken) PutAsync(String, HttpContent, CancellationToken)

PUT 要求をとキャンセル トークンと共に非同期操作として送信します。 Send a PUT request with a cancellation token as an asynchronous operation.

PutAsync(Uri, HttpContent) PutAsync(Uri, HttpContent) PutAsync(Uri, HttpContent) PutAsync(Uri, HttpContent)

指定された URI に PUT 要求を非同期操作として送信します。 Send a PUT request to the specified Uri as an asynchronous operation.

PutAsync(Uri, HttpContent, CancellationToken) PutAsync(Uri, HttpContent, CancellationToken) PutAsync(Uri, HttpContent, CancellationToken) PutAsync(Uri, HttpContent, CancellationToken)

PUT 要求をとキャンセル トークンと共に非同期操作として送信します。 Send a PUT request with a cancellation token as an asynchronous operation.

SendAsync(HttpRequestMessage) SendAsync(HttpRequestMessage) SendAsync(HttpRequestMessage) SendAsync(HttpRequestMessage)

非同期操作として HTTP 要求を送信します。 Send an HTTP request as an asynchronous operation.

SendAsync(HttpRequestMessage, CancellationToken) SendAsync(HttpRequestMessage, CancellationToken) SendAsync(HttpRequestMessage, CancellationToken) SendAsync(HttpRequestMessage, CancellationToken)

非同期操作として HTTP 要求を送信します。 Send an HTTP request as an asynchronous operation.

SendAsync(HttpRequestMessage, HttpCompletionOption) SendAsync(HttpRequestMessage, HttpCompletionOption) SendAsync(HttpRequestMessage, HttpCompletionOption) SendAsync(HttpRequestMessage, HttpCompletionOption)

非同期操作として HTTP 要求を送信します。 Send an HTTP request as an asynchronous operation.

SendAsync(HttpRequestMessage, HttpCompletionOption, CancellationToken) SendAsync(HttpRequestMessage, HttpCompletionOption, CancellationToken) SendAsync(HttpRequestMessage, HttpCompletionOption, CancellationToken) SendAsync(HttpRequestMessage, HttpCompletionOption, CancellationToken)

非同期操作として HTTP 要求を送信します。 Send an HTTP request as an asynchronous operation.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。 Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください