Yahoo!検索とLiveガジェットのマッシュアップWindows Liveが魅せる次世代マッシュアップ(3/5 ページ)

» 2006年11月30日 09時30分 公開
[大澤文孝,ITmedia]

POSTメソッドを使う場合

 GETメソッドではなく、POSTメソッドを使う場合も同様に処理することができる。

 POSTメソッドを使う場合には、Web.Network.createRequestメソッドの第1引数をWeb.Network.Type.XmlPostとすればよい。次の通りだ。


var url = 
  "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch";
// パラメータ
var param = "appid=" + 自分のアプリケーションID;
param += "&query=" + encodeURI("ウィンドウズ");
response = 
  Web.Network.createRequest(
    Web.Network.Type.XMLPost, url, 
    null, OnXmlDataReceived, 
    Web.Utility.Prioritizer.Priorities.Medium,
    param,
    {"Content-Type":"application/x-www-form-urlencoded"});
response.execute();

 ここに示したように、POSTメソッドで送信する際には、Content-Typeヘッダの設定を忘れないようにしてほしい。この設定を忘れると、REST形式のWebサービスは失敗する。これはAJAXにおける通信の注意点と同じだ。

JSON形式の戻り値の場合

 Windows Liveのネットワークリクエストオブジェクトでは、JSON形式で戻り値を返すWebサービスを呼び出すこともできる。

 Yahoo!検索サービスでは、「output=json」というパラメータを付けると、結果をJSON形式で取得できる。

 output=jsonオプションについての記載は、日本語版のYahoo!デベロッパーネットワークにはないが、日本語版Yahoo!でもこのパラメータは動作する。


var url = 
  "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?";
url += "appid=" +自分のアプリケーションID;
url += "&query=" + encodeURI("ウィンドウズ");
url += "&output=json";
var response = 
  Web.Network.createRequest(
    Web.Network.Type.XMLGet, url, 
    null, OnXmlDataReceived);
response.execute();

 このときの受け手となるOnXmlDataReceived関数では、responseTextプロパティを使って文字列として読み込み、それをeval関数で評価すればよい。具体的には、次のようになる。


function OnXmlDataReceived(response, arg)
{
  // 成功したかどうかを調べる
  if (response.status == 200)
  {
    // 成功している
    // JSONを評価
    var result = eval('(' + response.responseText + ')');
    // 以下、展開処理
    var root = result.ResultSet.Result;
    for (var i = 0; i < root.length; i++)
    {
      var pElement = document.createElement("p");
      var aElement = document.createElement("a");
      aElement.href = root[i].Url;
      aElement.innerText = root[i].Title;
      pElement.appendChild(aElement);
      m_el.appendChild(pElement);
    }
  }
  else
  {
    m_el.innerText = "XMLデータの受信に失敗しました。ステータスは" . response.status;
  }
}

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ