URLLoader,其實也是flex和后台交互的三大方法之一,其他方法我就不贅述了。
URLLoader需要URLRequest來發送請求。
URLRequest可捕獲單個 HTTP 請求中的所有信息。將URLRequest 對象傳遞給URLStream或URLLoader 類以及其他加載操作的load()
方法以啟動URL數據加載。
var request:URLRequest = new URLRequest(http://localhost:1146/Data/Book.xml)
同樣可以使用URLRequest來請求一個本地項目/應用里的文件,如下代碼示例:
var request:URLRequest = new URLRequest("Data/Book.xml")
URLLoader 類以文本、二進制數據或 URL 編碼變量的形式從 URL 下載數據。在下載文本文件、XML 或其他用於動態數據驅動應用程序的信息時,它很有用。
這里有個加載本地文件的例子:
private function getTreefromLayerControl():void { var lcurl:String=this.configXML.groupurl; var urlloader:URLLoader=new URLLoader(new URLRequest(lcurl)); urlloader.addEventListener(Event.COMPLETE, completehandler); } //layercontrol加載后解析 private function completehandler(event:Event):void { var x:XML=new XML(event.target.data); layerxml=x.groupconfig.layeritem; for each(var xm:XML in layerxml) { if(xm.hasOwnProperty("@label")) { xmlhandler(xm); } else { BLLayerItem(xm); } }
這里有個訪問服務器后台的例子:
private function getText():void { var v:URLVariables = new URLVariables("name=jacky&age=35&address=HongKong China"); var r:URLRequest = new URLRequest(); r.url = "http://localhost:2222/FlexService/TextFrm.aspx"; r.method = URLRequestMethod.GET; r.data = v; var l:URLLoader = new URLLoader(); l.load(r); l.addEventListener(Event.COMPLETE,txtCompleteHandler); //注冊請求完成后 響應獲取數據事件方法 labMsg.alpha = 1; } private function txtCompleteHandler(e:Event):void { var l:URLLoader = URLLoader(e.target); var o:Object = URLUtil.stringToObject(String(l.data)); //使用URLUtil對將數據進行反序列化以方便使用 txtName.text = o.name; txtAge.text = o.age; txtAddress.text = o.address; labMsg.alpha = 0; }
后台:
protected void Page_Load(object sender, EventArgs e) { //獲取URLResuest請求回的參數 返回數據用;分隔以方便Flex對數據進行序列化 string rs = String.Format("name={0};age={1};address={2}",Request.QueryString["name"], Request.QueryString["age"], Request.QueryString["address"]); Response.ClearContent(); Response.ContentType = "text/plain"; Response.Write(rs); //以文本形式返回數據 Response.End(); }