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