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  
            }  
        }  
     
    }
 

相关推荐