HttpClient クラス

定義

HTTP 要求を送信し、URI によって識別されるリソースから HTTP 応答を受信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

public ref class HttpClient sealed : IClosable, IStringable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class HttpClient final : IClosable, IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class HttpClient final : IClosable, IStringable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class HttpClient : System.IDisposable, IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class HttpClient : System.IDisposable, IStringable
function HttpClient(filter)
Public NotInheritable Class HttpClient
Implements IDisposable, IStringable
継承
Object Platform::Object IInspectable HttpClient
属性
実装

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

次のサンプル コードは、Web サーバーから文字列としてコンテンツを取得する方法を示しています。

using System;

var uri = new System.Uri("http://www.bing.com");
using (var httpClient = new Windows.Web.Http.HttpClient())
{
    // Always catch network exceptions for async methods
    try
    {
        string result = await httpClient.GetStringAsync(uri);
    }
    catch (Exception ex)
    {
        // Details in ex.Message and ex.HResult.
    }
}
// Having exited the scope of the using statement, httpClient.Dispose() will be called
// automatically, thus freeing up system resources (the underlying socket, and memory
// used for the object).
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.Web.Http.h"
using namespace winrt;

Windows::Foundation::IAsyncAction HttpClientExample()
{
    Windows::Foundation::Uri uri{ L"http://www.bing.com" };
    Windows::Web::Http::HttpClient httpClient{};

    // Always catch network exceptions for async methods
    try
    {
        auto response{ co_await httpClient.GetStringAsync(uri) };
    }
    catch (winrt::hresult_error const& ex)
    {
        // Details in ex.message() and ex.to_abi().
    }

    // The destructor of HttpClient frees system resources
    // (the underlying socket, and memory used for the object).
}
using namespace Windows::Foundation;
using namespace Windows::Web::Http;

uri = ref new Uri("http://example.com/datalist.aspx");
httpClient = ref new HttpClient();

// Always catch network exceptions for async methods
try 
{
    httpClient->GetStringAsync(uri);
}
catch 
{
    // Details in ex.Message and ex.HResult.   
}

// In C++/CX, the system resources used by httpClient object are released 
// when the object falls out of scope or by the destructor (delete operator).

HttpClient クラスは、多くの場合、アプリでテキストをダウンロードして解析するために使用されます。 HTTP サーバーによって Content-Type ヘッダーで指定された文字エンコードが、HTTP 応答本文の文字エンコード (XML ドキュメント内の XML エンコードなど) と一致しない可能性があります。 HttpClient をテキストと共に使用する方法の 1 つは、 GetStringAsync メソッドを呼び出し、返された文字列をテキスト パーサーに渡すことです。 ただし、 Content-Type が文字列として表現可能な型でない場合は、エラーが発生する可能性があります。 XML パーサーで HttpClient を使用する信頼性の高い方法は、 GetBufferAsync メソッドを呼び出し、"<?xml>" 要素のバッファーを解析することです。 次に、指定された文字エンコード ("xmlversion="<1.0" encoding="UTF-8"?>"など) を使用して、HTTP 応答本文を解析します。 その他のテキスト形式の場合は、アプリが HTTP 応答本文の最初の部分をスキャンして使用される文字エンコードを決定する場合に、同様のメソッドを使用できます。

注釈

HttpClient クラス インスタンスは、HTTP 要求を送信して応答を受信するセッションとして機能します。 HttpClient インスタンスは、そのインスタンスによって実行されるすべての要求に適用される設定のコレクションです。 さらに、すべての HttpClient インスタンスは独自の接続プールを使用し、その要求を他の HttpClient インスタンスによって実行される要求から分離します。

HttpClient は、より具体的な HTTP クライアントのフィルターで使用するクラスとしても機能します。 たとえば、ソーシャル ネットワーク サービスに固有の追加のメソッド (GetFriends メソッドなど) を提供する HttpClientFilter があります。

HttpClient と Windows.Web.Http 名前空間の関連クラスを使用するアプリが大量のデータ (50 メガバイト以上) をダウンロードする場合、アプリはそれらのダウンロードをストリーミングし、既定のバッファリングを使用しないようにする必要があります。 既定のバッファリングを使用すると、クライアント のメモリ使用量が非常に大きくなり、パフォーマンスが低下する可能性があります。

HttpClient を使用して HTTP サーバーに接続する方法を示す C# と C++/WinRT のサンプル コードについては、「 HttpClient」を参照してください。

HttpClient を使用して HTTP サーバーに接続する方法を示す JavaScript と HTML のサンプル コードについては、「 Windows.Web.Http を使用した HTTP サーバーへの接続」を参照してください。

バージョン履歴

Windows のバージョン SDK バージョン 追加された値
1903 18362 TryDeleteAsync
1903 18362 TryGetAsync(Uri)
1903 18362 TryGetAsync(Uri,HttpCompletionOption)
1903 18362 TryGetBufferAsync
1903 18362 TryGetInputStreamAsync
1903 18362 TryGetStringAsync
1903 18362 TryPostAsync
1903 18362 TryPutAsync
1903 18362 TrySendRequestAsync(HttpRequestMessage)
1903 18362 TrySendRequestAsync(HttpRequestMessage,HttpCompletionOption)

コンストラクター

HttpClient()

HttpClient クラスの新しいインスタンスを初期化します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

HttpClient(IHttpFilter)

HTTP 応答メッセージを処理するための特定のフィルターを使用して、 HttpClient クラスの新しいインスタンスを初期化します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

プロパティ

DefaultPrivacyAnnotation

HTTP 要求を送信し、URI によって識別されるリソースから HTTP 応答を受信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

DefaultRequestHeaders

各要求と共に送信する必要があるヘッダーのコレクションを取得します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

メソッド

Close()

HttpClient インスタンスを閉じ、割り当てられたリソースを解放します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

DeleteAsync(Uri)

DELETE 要求を非同期操作として指定された Uri に送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

Dispose()

アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。

GetAsync(Uri)

指定された URI に GET 要求を非同期操作として送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

GetAsync(Uri, HttpCompletionOption)

HTTP 入力候補オプションを非同期操作として指定した URI に GET 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

GetBufferAsync(Uri)

指定した Uri に GET 要求を送信し、非同期操作で応答本文をバッファーとして返します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

GetInputStreamAsync(Uri)

指定した Uri に GET 要求を送信し、応答本文を非同期操作でストリームとして返します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

GetStringAsync(Uri)

指定 URI に GET 要求を送信し、非同期操作で応答本体を文字列として返します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

PostAsync(Uri, IHttpContent)

非同期操作として、指定した URI に POST 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

PutAsync(Uri, IHttpContent)

指定された URI に PUT 要求を非同期操作として送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

SendRequestAsync(HttpRequestMessage)

非同期操作として HTTP 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

SendRequestAsync(HttpRequestMessage, HttpCompletionOption)

HTTP 入力候補オプションを使用して HTTP 要求を非同期操作として送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

ToString()

現在の HttpClient オブジェクトを表す文字列を返します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryDeleteAsync(Uri)

DELETE 要求を非同期操作として指定された Uri に送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryGetAsync(Uri)

非同期操作として、指定した Uri に GET 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryGetAsync(Uri, HttpCompletionOption)

非同期操作として、指定した Uri に GET 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryGetBufferAsync(Uri)

指定した Uri に GET 要求を送信し、応答本文を HttpGetBufferResult として返し、非同期操作で IBuffer 値を指定します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryGetInputStreamAsync(Uri)

指定した Uri に GET 要求を送信し、応答本文を非同期操作でストリームとして返します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryGetStringAsync(Uri)

指定 URI に GET 要求を送信し、非同期操作で応答本体を文字列として返します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryPostAsync(Uri, IHttpContent)

非同期操作として、指定した Uri に POST 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TryPutAsync(Uri, IHttpContent)

非同期操作として、指定した Uri に PUT 要求を送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TrySendRequestAsync(HttpRequestMessage)

指定した Uri に HTTP 要求を非同期操作として送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

TrySendRequestAsync(HttpRequestMessage, HttpCompletionOption)

完了オプションを使用して HTTP 要求を非同期操作として指定された Uri に送信します。 HttpClient クラスのプログラミング ガイダンスとコード例については、HttpClient の概念に関するトピックを参照してください。

適用対象

こちらもご覧ください