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