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

}  

 

你可能感兴趣的:(request)