• 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();  
    }  
  • 相关阅读:
    第03组 Alpha冲刺(3/4)
    第03组 Alpha冲刺(2/4)
    第03组 Alpha冲刺(1/4)
    课程总结
    第十四周学习总结&实验报告
    第十三周课程总结
    第十二周学习总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
  • 原文地址:https://www.cnblogs.com/tiandi/p/2538917.html
Copyright © 2020-2023  润新知