AS3與PHP通訊的五種方法(基於HTTP協議)
/** * 這是基於HTTP協議的 * 一共介紹了五種方法 */ package { import flash.display.Sprite; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.URLRequestMethod; import flash.net.URLLoaderDataFormat; import flash.net.URLRequestHeader; import flash.utils.ByteArray; /** * ... * @author .....Michael zhang * @contact...QQ:271291823 */ public class ASWithPHP_1 extends Sprite { private var urlLoader:URLLoader; private var phpUrl:URLRequest; public function ASWithPHP_1() { init(); } private function init():void { urlLoader = new URLLoader(); phpUrl = new URLRequest("PHP地址"); /** * 第一種:直接讀取PHP裡面的資料 */ //---------------------------------- urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; /** * URLLoaderDataFormat.BINARY:String---->指定以原始位元據形式接收下載的資料 * URLLoaderDataFormat.TEXT:String----> 指定以文本形式接收已下載的資料 * URLLoaderDataFormat.VARIABLES:String---->指定以 URL 編碼變數形式接收下載的資料 */ urlLoader.load(phpUrl); urlLoader.addEventListener(Event.COMPLETE, completeHandler1); //----------------------------------- /** * 第二種:讀取PHP產生的xml */ //------------------------------------- urlLoader.load(phpUrl); urlLoader.addEventListener(Event.COMPLETE, completeHandler2); //------------------------------------- /** * 第三種:通過GET方法把參數傳到PHP裡面 */ //-------------------------------------- phpUrl.method = URLRequestMethod.GET; phpUrl.data = "要傳出去的資料"; urlLoader.load(phpUrl); urlLoader.addEventListener(Event.COMPLETE, completeHandler3); //-------------------------------------- /** * 第四種:通過POST方法把參數傳到PHP裡面 */ //-------------------------------------- phpUrl.method = URLRequestMethod.POST; var vars:URLVariables = new URLVariables(); vars.value1 = "參數1"; vars.value2 = "參數2"; phpUrl.data = vars; urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; urlLoader.load(phpUrl); urlLoader.addEventListener(Event.COMPLETE, completeHandler4); //-------------------------------------- /** * 第五種:二進位通訊方法 */ //---------------------------------------- var requestHeader:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); phpUrl.method = URLRequestMethod.POST; phpUrl.requestHeaders.push(requestHeader); var byteArr:ByteArray = new ByteArray(); byteArr.writeByte(12); byteArr.writeUTF("CNSloppyMan"); var sendData:ByteArray = new ByteArray(); sendData.writeInt(byteArr.length); sendData.writeBytes(byteArr); phpUrl.data = sendData; urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.load(phpUrl); urlLoader.addEventListener(Event.COMPLETE, completeHandler5); //----------------------------------------- } private function completeHandler1(e:Event):void { var vars:URLVariables = URLVariables((e.currentTarget as URLLoader).data); trace("接受資料:" + vars.value); //假定value是PHP裡面自訂的節點值 } private function completeHandler2(e:Event):void { var xml:XML = new XML((e.currentTarget as URLLoader).data); trace("xml資料:" + xml.toString()); } private function completeHandler3(e:Event):void { trace("GET-已經傳出去的資料:" + (e.currentTarget as URLLoader).data); } private function completeHandler4(e:Event):void { trace("POST-已經傳出去的資料:" + (e.currentTarget as URLLoader).data); } private function completeHandler5(e:Event):void { var _byteArr:ByteArray = e.currentTarget.data as ByteArray; trace(_byteArr.readInt()); //14 trace(_byteArr.readByte()); //12 trace(_byteArr.readUTF()); //CNSloppyMan } } } ?
?