flex URLLoader和URLRequest淺析


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();  
}  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM