[AS3] PHPとAS3の連携 GETでXML取得

2010/09/29

こんにちは。きんくまです。
今回は、AS3からGETでパラメータを送って、サーバーからXMLが返ってくるやつです。
よくあるWebサービスのAPIがこのパターンですね。
ポイントはXMLが返ってくるといっても、情報としてはテキストが送られてくることですね。

■Main.as

package 
{
	import flash.display.Sprite;
	import flash.errors.IOError;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	
	/**
	 * ...
	 * @author KinkumaDesign
	 */
	public class Main extends Sprite 
	{
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			var req:URLRequest = new URLRequest();
			req.url = "myxml.php?name=Peter&age=15";
			var urlLoader:URLLoader = new URLLoader();
			urlLoader.dataFormat = URLLoaderDataFormat.TEXT; //返ってくるのはText
			urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			urlLoader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
			urlLoader.load(req);
		}
		
		private function loaderCompleteHandler(e:Event):void 
		{
			var urlLoader:URLLoader = e.target as URLLoader;
			var myXML:XML = new XML(urlLoader.data);
			trace("msg = " + myXML.msg);
			trace("luckyNo = " + myXML.luckyno);
		}
		
		private function ioErrorHandler(e:IOErrorEvent):void 
		{
			throw new Error(e.text);
		}
		
	}
	
}

■myxml.php

<?php
$name = $_GET["name"];
$age = $_GET["age"];

$msg = '<?xml version="1.0" encoding="UTF-8"?>';
$msg .= '<data>';
$msg .= '<msg>Hello '.$name.'. Your age is '.$age.' years old !</msg>';
$msg .= '<luckyno>7</luckyno>';
$msg .= '</data>';
echo $msg;
?>

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る