今後10年を支えるWindowsアプリの条件Windows Liveが魅せる次世代マッシュアップ(4/5 ページ)

» 2006年11月28日 12時41分 公開
[大澤文孝,ITmedia]

Web.Networkクラスを使った通信方法

 Web.Networkクラスを使って通信するには、Web.Network.createRequestメソッドを呼び出して、ネットワークリクエストオブジェクトを作成する。

 Web.Network.createRequestメソッドの書式は、「Windows LiveガジェットのAPIリファレンス(http://promotion.live.jp/livesdk/reference.htm)」に記載されている。リファレンスによると、書式は次の通りだ。


var netReq = 
  Web.Network.createRequest(
    enumNetworkType, strUrl, 
    objContext, fnCallback, 
    enumPriority, strPostArgs, 
    objHeaders, enumFlags, intTimeout, strGroup);

 続いて、実例を見てみよう。

 リスト3は、http://www.example.co.jp/MyData.xmlファイルを読み込み、そのXMLデータをパースし、Liveガジェットの内部に描画するという例だ。

 MyData.xmlは、リスト4に示す簡単なデータ構造だと想定する(リスト4に示したXMLデータは、UTF-8形式で記述してあるものとする)。

リスト3:Web.Networkクラスを使った例

リスト4:取得するXMLデータの例

 リスト3では、initializeのメソッド内で、次のようにして、http://www.example.co.jp/MyData.xmlを取得するためのネットワークレスポンスオブジェクトを作成している。


var response = 
  Web.Network.createRequest(
    Web.Network.Type.XML,
    "http://www.example.co.jp/MyData.xml", 
    null, OnXmlDataReceived);

 第4引数には、ここでの場合「OnXmlDataRecived」という関数名を指定した(この関数名は任意の名前で問題ない)。そのため、受信が完了すると、OnXmlDataRecivedという関数が呼び出されることになる。

 実際に接続して受信するには、executeメソッドを呼び出す。


response.execute();

 ネットワークレスポンスオブジェクトにおける通信は非同期である。このため、executeメソッドの呼び出しはただちに完了し、次の行の処理へと移る。

 そして、受信が完了した時には、createRequestメソッドの第4引数に渡した関数――この例では、OnXmlDataReceived関数――が呼び出される(abortメソッドを呼び出すと、通信を取りやめることができる)。

 createRequestメソッドのenumFlags引数にDUPLICATEフラグを指定しない限り、ネットワークリクエストオブジェクトは、同じURLを指定した場合に、そして2回目以降は、再取得しない。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ