Flash(AS3) から XML-RPC を利用(zoome API)
最近動画に関して少々調査を行っています。
ここで、動画共有サイト zoome で提供されている API で XML-RPC という単語を目にしました。XML-RPC とはなんぞや、と調べて見たところ、指定の形式の XML データ(request)を指定のサーバ(URL)に送信すると、指定の形式の XML データ(response)が得られるというもののようです。
そういえば、XMLをサーバに送信するような処理を書いたことはなかったな、ということで、zoome API を元に Flash(AS3) から XML-RPC をどのように利用するかのメモを以下に記述します。
例として「マイページのURLネーム(zoomeurl)」が「sample」という会員の、「zoome の会員ID(zoomeid)」を取得します。
zoome API 解説ページ
http://www.zoome.jp/help10
会員基礎情報 取得メソッド説明
http://www.zoome.jp/help10#zoome.getUserInfo
会員基礎情報 取得メソッド(zoome.getUserInfo)の説明箇所の「▼request」 に記されている XML データを、APIのURI(エンドポイント) http://up.zoome.jp/xmlrpc に送信することで、「▼response」 に記されている XML データを取得することができます。
package twm.index.analyze {
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequestMethod;
import flash.net.URLRequest;
public class Sample {
private var response:URLLoader;
public function Sample() {
}
public function startRequest():void{
var requestXml:XML =
<methodCall>
<methodName>zoome.getUserInfo</methodName>
<params>
<param><value><struct>
<member><name>zoomeurl</name><value><string></string></value></member>
</struct></value></param>
</params>
</methodCall>
;
var zoomeurl:String = "sample";
requestXml.params.param.value.struct.member.value.string = zoomeurl;
var request:URLRequest = new URLRequest();
request.contentType = 'text/xml';
request.data = requestXml;
request.method = URLRequestMethod.POST;
request.url = "http://up.zoome.jp/xmlrpc";
response = new URLLoader();
response.addEventListener(Event.COMPLETE, eventComplete);
response.addEventListener(ErrorEvent.ERROR, eventError);
response.load(request);
}
private function eventError(event:ErrorEvent):void {
}
private function eventComplete(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
var responseXml:XML = new XML(loader.data);
var zoomeidList:XMLList = responseXml.params.param.value.struct.member.(name == "zoomeid");
var zoomeid:String = zoomeidList.value.i4;
trace('zoomeid: ' + (zoomeid));
}
}
}
追記) zoome API はクロスドメインの関係で web 上からは直接アクセスできない事に気づきました。上記サンプルコードはローカル PC 上では動作します。


