/** * 这是基于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 } } }