AS3与PHP通信的五种方法(基于HTTP协议)

基于HTTP协议的,然后主要是下面的五种方法。

  1 /**
  2  * 这是基于HTTP协议的
  3  * 一共介绍了五种方法
  4  */
  5 
  6 package  
  7 {
  8     import flash.display.Sprite;
  9     import flash.events.*;
 10     import flash.net.URLLoader;
 11     import flash.net.URLRequest;
 12     import flash.net.URLVariables;
 13     import flash.net.URLRequestMethod;
 14     import flash.net.URLLoaderDataFormat;
 15     import flash.net.URLRequestHeader;
 16     import flash.utils.ByteArray;
 17     /**
 18      * ...
 19      * 
 20      * 
 21      */
 22     
 23     public class ASWithPHP_1 extends Sprite 
 24     {
 25         private var urlLoader:URLLoader;
 26         private var phpUrl:URLRequest;
 27         
 28         public function ASWithPHP_1() 
 29         {
 30             init();
 31         }
 32         
 33         private function init():void 
 34         {
 35             urlLoader = new URLLoader();
 36             phpUrl = new URLRequest("PHP地址");
 37             
 38             /**
 39              * 第一种:直接读取PHP里面的数据
 40              */
 41             //----------------------------------------------------------------------
 42             urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
 43             /**
 44              * URLLoaderDataFormat.BINARY:String---->指定以原始二进制数据形式接收下载的数据
 45              * URLLoaderDataFormat.TEXT:String----> 指定以文本形式接收已下载的数据
 46              * URLLoaderDataFormat.VARIABLES:String---->指定以 URL 编码变量形式接收下载的数据 
 47              */
 48             urlLoader.load(phpUrl);
 49             urlLoader.addEventListener(Event.COMPLETE, completeHandler1);
 50             //-----------------------------------------------------------------------
 51             
 52             /**
 53              * 第二种:读取PHP生成的xml 
 54              */
 55             //-------------------------------------------------------------------------
 56             urlLoader.load(phpUrl);
 57             urlLoader.addEventListener(Event.COMPLETE, completeHandler2);
 58             //-------------------------------------------------------------------------
 59             
 60             /**
 61              * 第三种:通过GET方法把参数传到PHP里面
 62              */
 63             //--------------------------------------------------------------------------
 64             phpUrl.method = URLRequestMethod.GET;
 65             phpUrl.data = "要传出去的数据";
 66             urlLoader.load(phpUrl);
 67             urlLoader.addEventListener(Event.COMPLETE, completeHandler3);
 68             //--------------------------------------------------------------------------
 69             
 70             /**
 71              * 第四种:通过POST方法把参数传到PHP里面
 72              */
 73             //--------------------------------------------------------------------------
 74             phpUrl.method = URLRequestMethod.POST;
 75             var vars:URLVariables = new URLVariables();
 76             vars.value1 = "参数1";
 77             vars.value2 = "参数2";
 78             phpUrl.data = vars;
 79             urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
 80             urlLoader.load(phpUrl);
 81             urlLoader.addEventListener(Event.COMPLETE, completeHandler4);
 82             //--------------------------------------------------------------------------
 83             
 84             /**
 85              * 第五种:二进制通信方法
 86              */
 87             //----------------------------------------------------------------------------
 88             var requestHeader:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
 89             phpUrl.method = URLRequestMethod.POST;
 90             phpUrl.requestHeaders.push(requestHeader);
 91             var byteArr:ByteArray = new ByteArray();
 92             byteArr.writeByte(12);
 93             byteArr.writeUTF("CNSloppyMan");
 94             var sendData:ByteArray = new ByteArray();
 95             sendData.writeInt(byteArr.length);
 96             sendData.writeBytes(byteArr);
 97             phpUrl.data = sendData;
 98             urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
 99             urlLoader.load(phpUrl);
100             urlLoader.addEventListener(Event.COMPLETE, completeHandler5);
101             //-----------------------------------------------------------------------------
102         }
103         
104         private function completeHandler1(e:Event):void 
105         {
106             var vars:URLVariables = URLVariables((e.currentTarget as URLLoader).data);
107             trace("接受数据:" + vars.value); //假定value是PHP里面自定义的节点值
108         }
109         
110         private function completeHandler2(e:Event):void {
111             var xml:XML = new XML((e.currentTarget as URLLoader).data);
112             trace("xml数据:" + xml.toString());
113         }
114         
115         private function completeHandler3(e:Event):void {
116             trace("GET-已经传出去的数据:" + (e.currentTarget as URLLoader).data);    
117         }
118         
119         private function completeHandler4(e:Event):void {
120             trace("POST-已经传出去的数据:" + (e.currentTarget as URLLoader).data);    
121         }
122         
123         private function completeHandler5(e:Event):void {
124             var _byteArr:ByteArray = e.currentTarget.data as ByteArray;
125             trace(_byteArr.readInt()); //14
126             trace(_byteArr.readByte()); //12
127             trace(_byteArr.readUTF()); //CNSloppyMan
128         }
129     }
130 
131 }
原文地址:https://www.cnblogs.com/bulolo/p/2776309.html