この記事のURL

http://www.dango-itimi.com/blog/archives/2009/000997.html


FLASH tips 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 上では動作します。

[ FLASH ] [ tips ] 投稿者 siratama : 2009年08月27日 16:39

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/957

コメント

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]