在.net中我們知道有一個叫做WebHttpRequest的東西,用它我們可以實現各種網絡偷窺,監控,采集和機器人,如果外加一
個模式識別,那真是吊爆了。。。
在as中我們也可以實現同樣的功能,而且我們可以配合js來做到跨域,采集cookie等等一些用戶行為分析,也算是web開發中
的一把利器。
一:構建與外部程序的通信
1:一般要三個步驟
<1> 使用UrlRequest創建請求對象。
<2> 使用UrlLoader載入請求對象,然后就可以發出請求了。
<3> 監聽UrlLoader對象,通過各種事件來反饋處理的結果。
二:構建UrlRequest
下面來看看UrlRequest中的常用屬性
1: url
這個很簡單了,請求網址,可以是絕對也可以是相對的。
2:method
寫過ajax都知道,它是用來控制窗體的提交方式是post還是get,什么get不能大于2k,post無限制等等。
3:requestHeader
我們知道模擬提交都會在http的head中追加各種參數來欺騙服務器端,偽裝自己是真實的人為請求。
4:data
就是請求時附帶給服務器端的數據,用json格式,url的kv形式都可以,但必須用URLVariables進行封裝。
5:簡單的demo
1 var url="http://localhost:25212/index.aspx"; 2 3 var vari:URLVariables=new URLVariables(); 4 5 vari.data="{\"id\":\"2\"}"; 6 7 var req:URLRequest=new URLRequest(url); 8 9 req.data=vari; 10 11 req.method=URLRequestMethod.POST;
三:構建UrlLoader對象
<一>: 在as中,所有的UrlRequest都需要用UrlLoader來裝載才能進行與后端程序進行交互,同時提供了5個事件來監聽當前請求的狀況。
1: open事件
請求操作開始時執行的事件
2:progress事件
常用監控下載進度,可以通過byteloaded和bytetotal來實時查看“已加載的數據”和“總數據”。
3:complete事件
成功加載數據后調用的事件,也是最常用的。
4:ioError事件
就像ajax一樣,請求失敗的時候調用的事件。
<二>: 當遠程返回數據的時候,數據都會保存在urlloader中data屬性里,當然數據返回的時候是什么類型,取決與我們在post
的時候指定的URLLoaderDataFormat。
1:URLLoaderDataFormat.TEXT
指定當前返回data值必須是text值,當然這也是默認值。
2:URLLoaderDataFormat.BINARY
有時候我們flash需要加載web端的二進制數據的時候,這時候就要指定BINARY屬性。
3:URLLoaderDataFormat.VARIABLES
這個就是指定包含的數據是一個經過url編碼的數據,所以我們用VARIABLES進行解碼。
//用urlloader進行裝載 var loader:URLLoader=new URLLoader(req); loader.addEventListener(Event.COMPLETE,onComplete); loader.addEventListener(IOErrorEvent.IO_ERROR,onError); //請求加載完成 function onComplete(e:Event):void{ trace(loader.data); }
大體上就這樣了,下面我們做個實驗,向服務器傳遞json由服務器端進行處理。
1:服務端代碼,只是將請求參數原樣返回
1 public partial class Index : System.Web.UI.Page 2 { 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 var data = Request.Form["data"]; 6 7 Response.Write("恭喜,數據請求成功~ " + data); 8 } 9 }
2:as代碼
1 import flash.net.URLLoader; 2 import flash.net.URLRequest; 3 import flash.events.Event; 4 import flash.text.TextField; 5 import flash.utils.Timer; 6 import flash.events.TimerEvent; 7 8 var url="http://localhost:25212/index.aspx"; 9 10 var vari:URLVariables=new URLVariables(); 11 12 vari.data="{\"id\":\"2\"}"; 13 14 var req:URLRequest=new URLRequest(url); 15 16 req.data=vari; 17 18 req.method=URLRequestMethod.POST; 19 20 //用urlloader進行裝載 21 var loader:URLLoader=new URLLoader(req); 22 23 loader.addEventListener(Event.COMPLETE,onComplete); 24 loader.addEventListener(IOErrorEvent.IO_ERROR,onError); 25 26 //請求加載完成 27 function onComplete(e:Event):void{ 28 trace(loader.data); 29 } 30 31 //io請求錯誤 32 function onError(e:IOErrorEvent):void{ 33 trace("對不起,數據請求錯誤"); 34 }
文章列表