次の方法で共有


Web サービスへの接続 (HTML)

[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]

これらのトピックでは、Windows ランタイム アプリ内の Web サービスに接続するさまざまな方法を示しています。 既定の方法は、Windows.Web.Http.HttpClient を使うことです。これは、すべての言語で利用できる新しい Windows ランタイム クラスです。 この API は非常に強力であり、アプリが Web サービスにアクセスするために使う機能のほとんどを備えています。

Windows.Web.Http 名前空間のクラスでは、新しい HTTP クライアント アプリ用のプログラミング インターフェイスが提供されます。Windows.Web.Http 名前空間とそれに関連する Windows.Web.Http.Headers および Windows.Web.Http.Filters 名前空間には、ユーザーが HTTP 要求を行い、HTTP 経由で最新の Web サービスから HTTP 応答を受信する HTTP クライアント コンポーネントが用意されています。

Windows.Web.Http.HttpClient では、基本的な HTTP 要求操作を対象として特に一般的なタスクを処理するシンプルなインターフェイスが用意されており、ほとんどのシナリオに適用される認証 (AUTH) に妥当な既定値が提供されます。より複雑な HTTP 操作を対象として、多数の追加機能が用意されています。

このセクションのトピックでは、WinJS.xhr と呼ばれる XMLHttpRequest の JavaScript ラッパー用 Windows ライブラリについても説明します。WinJS.xhr は、アプリの Web コンテンツへのアクセスを簡単にします。WinJS.xhr を使うと、HTTP 要求または HTTPS 要求でどのような形式のコンテンツやファイルでもダウンロードやアップロードができます。

要求を非同期的に行うかどうかを指定できる XMLHttpRequest とは異なり、WinJS.xhr は常に非同期的に動作します。WinJS.xhrWinJS.Promise を返します。これにより、then メソッドまたは done メソッドを使って、完了した要求、エラー、進行中の要求を処理できるようになります。

警告  XMLHttpRequest を使うと Blob オブジェクトや FormData オブジェクトなどの非常に大きいオブジェクトを転送できますが、完了するまでに長い時間がかかることがあります。Windows.Web.Http.HttpClient は、ストリームを含む、非常に大きいオブジェクトを送受信するために使うことができます。アプリはいつでも終了できるため、このような操作には Windows.Networking.BackgroundTransfer 名前空間のバックグラウンド転送 API の使用を検討する必要があります。大きなコンテンツのアップロードとダウンロードについて詳しくは、「ファイルをアップロードする方法」と「バックグラウンドでのデータの転送」をご覧ください。

 

次の表に、JavaScript で記述されたアプリが Web サービスにアクセスするために使うことができる API を示します。このプラットフォームは、該当機能が最初に追加された Windows のバージョンを示しています。

API Platform (プラットフォーム) コメント

Windows.Web.Http.HttpClient

Windows 8.1、Windows Phone 8.1、Windows Server 2012 R2

これは、データを送受信するために HTTP サーバーに接続するための推奨される方法です。

この機能は、JavaScript、C#、Visual Basic、C++ で記述されたアプリでもサポートされます。

WinJS.xhr Windows 8、Windows Phone 8.1、Windows Server 2012

Windows 8 および Windows Server 2012 では、XMLHttpRequest が十分ではなかった場合に、これは推奨される方法でした。

XMLHttpRequest Windows 8、Windows Phone 8.1、Windows Server 2012 このオブジェクトと API は、最新の Web ブラウザーの JavaScript 実装で使用できます。

 

対象となる開発者

Web サービスに接続するアプリの作成に関心があり、JavaScript および HTML を使う開発者

このトピックの情報は、JavaScript および HTML で記述されたアプリに適用されます。

C++/XAML で記述されたアプリ、および .NET Framework 4.5 を使い C# または Visual Basic で記述されたアプリで Web サービスに接続する方法については、「Web サービスへの接続 (XAML)」をご覧ください。

このセクションの内容

トピック 説明

Windows.Web.Http を使って HTTP サーバーに接続する方法

Windows.Web.Http 名前空間の Windows.Web.Http.HttpClient クラスを使って、Web サービスに GET 要求を送信したり、応答を取得したりします。

HTTPS 接続の要求方法

"ms-https-connections-only" meta 要素値を使うことで、アプリがナビゲーションまたは他の非メディア Web コンテンツの取得に HTTP 接続を使うことを防止できます。この meta 要素の content 属性を "true" に設定すると、HTTP ナビゲーションと非メディア Web コンテンツ取得は失敗します。

WinJS.xhr によるファイルのダウンロード方法

WinJS.xhr は、アプリの Web コンテンツのダウンロードを簡単にします。このトピックでは、WinJS.xhr を使ってファイルをダウンロードし、発生したエラーを処理してダウンロードの進行状況を報告する方法を示します。さまざまな型のコンテンツをダウンロードする方法も示します。

WinJS.xhr によるバイナリ データのアップロード方法

WinJS.xhr (XMLHttpRequest をラップする) を使うと、バイナリ データをアップロードしたりダウンロードしたりできます。次の例は、ピクチャからビットマップをアップロードする方法を示しています。ビットマップ ファイルを開くために使う Windows ランタイム メソッドは、IRandomAccessStream を返します。そのため、MSApp.createBlobFromRandomAccessStream を使って Blob に変換する必要があります。

警告  そのうえで XMLHttpRequest を使うと BlobFormData などの数 MB を超えるオブジェクトをアップロードまたはダウンロードできますが、完了するまでに長い時間がかかることがあります。アプリはいつでも終了できるため、このような操作には Windows ランタイムのバックグラウンド転送 API の使用を検討する必要があります。コンテンツのアップロードとダウンロードについて詳しくは、「ファイルのアップロード方法」と「ファイルのダウンロード方法」をご覧ください。バックグラウンド転送の一般的な説明については、「Transferring data in the background」をご覧ください。
 

WinJS.xhr で要求を再送する方法

WinJS.xhr を使って Web リソースを要求すると、応答がキャッシュされることがあります。その場合、以降の要求では要求を再送せず、クライアント コンピューターに存在しているバージョンのリソースが返されます。しかし、HTTP ヘッダーを追加し、キャッシュが保存されている場合でも要求が再送されるようにすることができます。

WinJS.xhr または HttpClient によるタイムアウト値の設定

XMLHttpRequest を使っている場合には、タイムアウト値を直接設定できますが、Windows.Web.Http.HttpClient または WinJS.xhr ではそのようなことができません。ただし、WinJS.Promise オブジェクトならタイムアウト値を設定する方法があります。指定した時間内に要求が完了していなければ、WinJS.Promise.timeout を呼び出し、要求を確実に取り消すことができます。

WinJS.xhr を使ったマッシュアップの作成方法

マッシュアップは、2 つ以上のソースに存在するデータを使って新しいものを作成する Web アプリケーションです。この例では、XMLHttpRequest (XHR) を使ってリモート RSS (Really Simple Syndication) フィードの取得と表示を行う方法を示します。

 

関連トピック

その他のリソース

アプリ機能の宣言

ネットワーク アプリでの例外の処理

ネットワーク分離機能を構成する方法

ループバックを有効にする方法とネットワーク分離のトラブルシューティングを行う方法

辞書/リファレンス

Windows.Foundation.Uri

Windows.Web.Http

Windows.Web.Http.Filters

Windows.Web.Http.Headers

Windows.Web.Http.HttpClient

WinJS.xhr

XMLHttpRequest

サンプル

HttpClient のサンプルに関するページ

Web サービスからのコンテンツやコントロールを統合するサンプル

Blob を使ってコンテンツの保存と読み込みを行うサンプルに関するページ

Web 認証のサンプル

XHR、ナビゲーション エラーの処理、URL スキームのサンプル