ActionScript3.0でXMLRPCを使ってはてブを取得してみる

はてなブックマークのブックマーク数カウントをFlashで取得しようとして困ったのでメモ。はてなブックマーク件数取得APIを確認するとXMLRPCとかRubyとか親しみのないキーワードが敷き詰められてました。API公開=GETパラメータとXMLレスポンスという認識の私はやや諦めの境地に。・・・苦労すると思いつつも、案外簡単にやってのけました。

XMLRPCとは

リクエストをXMLで送って、レスポンスをXMLでもらう方式。XMLの書式は決まってます。プロトコルはHTTP通信ですので特別な通信方法というわけではないようです。

ActionScriptで実装するには

AS2~3で次のライブラリがありました。私は1番目のライブラリを使用しました。

  1. XMLRPC for Actionscript 3.0 – Free Library
  2. Resources – as3-rpclib – Google Code
  3. SourceForge.net: XML-RPC Client for ActionScript

通信方法

難しい書式かと思いきや、単純にAPIのURLやパラメータを指定するだけでした。コードは以下のとおりシンプルなものです。

// 接続先のURLを指定
rpc = new ConnectionImpl("http://b.hatena.ne.jp/xmlrpc");

// イベントハンドラー
rpc.addEventListener(Event.COMPLETE, rpcCompleteHandler);
rpc.addEventListener(ErrorEvent.ERROR, rpcErrorHandler);

// パラメーターの設定(値と型を指定)
rpc.addParam("http://www.apple.com/", XMLRPCDataTypes.STRING);
rpc.addParam("http://www.adobe.com/", XMLRPCDataTypes.STRING);
rpc.addParam("http://www.google.com/", XMLRPCDataTypes.STRING);

// 接続開始(命令も一緒に設定)
rpc.call('bookmark.getCount');

レスポンスの取得

ライブラリが結果をObject型でパースしてくれるので、こちらはEventListenerで戻ってきた結果を取得するだけ。

private function rpcCompleteHandler(evt:Event):void
{
	var response:Object = rpc.getResponse();
	for (var param:String in response)
		trace(param + " -> " + response[param]);
}

trace文の結果は次のとおり。簡単にはてブ数を取得することができました。

http://www.adobe.com/ -> 13
http://www.apple.com/ -> 60
http://www.google.com/ -> 86

補足

はてブは残念ながらcrossdomain.xmlが設定されていないので、クロスドメイン問題に引っかかります。私はAdobe AIRで試したので問題なかったですが、Flashでマッシュアップしようとするとひとつ障壁になりますね。。しかしFlashの通信手法のバリエーションが増えたので今後何かにいかしていけそうかもです。

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加

Comment/Trackback %件