本記事の対象APIは既にサポートされていません。記事は参考程度にご利用ください。
クライアントでAPI操作
前回はWindows Live Application Based Storage APIを利用したWebアプリケーションを作成しました。ASP.
今回はMicrosoft Inter-frame Messaging XMLHttp APIを利用して,
Microsoft Inter-frame Messaging XMLHttp API
Microsoft Inter-frame Messaging (IFM) XMLHttp APIはHTTPによりサーバとデータを非同期で送受信するためのJavaScriptライブラリです。Application Based Storage APIによるユーザーデータの操作に特化したライブラリではありませんが,
これまで利用していたApplication Based Storage ATOM APIはHTTPによるXMLベースのプロトコルを使用しています。そのためユーザーデータへのアクセスにこのIFM XMLHttp APIが利用でき,
ただし,
IFM XMLHttp APIの利用の準備
コードの参照
実際にIFM XMLHttp APIを利用してみましょう。利用するにはWebページのHTMLコードに,
<script type="text/javascript" src="https://controls.services.live.com/scripts/base/v0.3/ifmxmlhttp.js"></script>
ほかにもWindows Liveサービス系のライブラリを参照しておきます。後ほどのコードで使用します。
<script type ="text/javascript" src = "https://controls.services.live.com/scripts/base/v0.3/live.js"></script>
Channelファイルの作成
IFM XMLHttp APIを利用するため,
<script type="text/javascript" src="http://controls.services.live.com/scripts/base/v0.3/channelreceiver.js"></script>
リクエストの作成と送信
リクエストを送信するまでのコードを書いてみましょう。ライブラリはXMLHttpRequestというクラスのみを持っています。これを使用してサーバと通信します。インスタンスを生成するコードは次のようになります。
var xmlhttp = new Microsoft.Live.Channels.XMLHttpRequest(
"https://cumulus.services.live.com/@xhrproxy",
"Channel.htm",
"https://cumulus.services.live.com/@xhrproxy?name=channel");
コンストラクタ引数は先頭から順に以下の通りです。
- proxyURL
Windows Liveサービス上のXMLHttpプロキシと呼ばれるサーバへのURLになります。
「https:// cumulus. services. live. com/@xhrproxy」 を指定します。 - parentChannelURL
Channelファイルのパスを指定します。省略すると
「Channel. htm」 が指定されたことになります。 - proxyChannelURL
Windows Liveサービス上のChannelファイルのURLです。
「https:// cumulus. services. live. com/@xhrproxy?name=channel」 を指定します。
次にXMLHttpRequestクラスのonreadystatechangeプロパティにリクエストの応答を受け取るコールバック関数を指定します。
// (onreadystatechangeというfunctionを指定した場合)
xmlhttp.onreadystatechange = onreadystatechange;
続いてopenメソッドを呼び出し,
// (lidはユーザーデータを示す識別子が格納されているものとする)
xmlhttp.open("GET", 'https://cumulus.services.live.com/@C@' + lid + '/AtomApplicationStorage/RootFolders');
上記コードに示すように,
委任認証にはAuthorizationヘッダの指定が必要でした。setRequestHeaderメソッドを使用してヘッダの指定が可能です。引数にはヘッダの名前とその値を指定します。
// (deltは委任トークンが格納されているものとする)
xmlhttp.setRequestHeader('Authorization', 'DelegatedToken dt="' + delt + '"');
実際にリクエストを送信するにはsendメソッドを使用します。
xmlhttp.send(null);
sendメソッドの引数には,