提供一个常用的专门用来请求数据的工具类:
1:URLLoader方式
2:HttpService方式
直接上源码:
package { import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; import mx.rpc.events.FaultEvent; import mx.rpc.events.InvokeEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; import mx.utils.StringUtil; /** * <p>Data Request Delegate</p> * this class has tow request ways : * 1 . HTTPService * 2 . URLLoader * */ public class DataRequestDelegate { /** * Don't init static class * */ public function DataRequestDelegate() { throw new Error("Don't init static class"); } /** * requestRemoteData use HTTPService * @param reqUrl * @param parameters (default = null) * @param onResultHandler (default = null) * @param onFaultHandler (default = null) * @param onInvokeHandler (default = null) * @param resultFormat (default = "object") * */ public static function requestRemoteData(reqUrl:String,parameters:Object=null,onResultHandler:Function = null,onFaultHandler:Function = null,onInvokeHandler:Function = null,resultFormat:String="object"):void { try { reqUrl = StringUtil.trim(reqUrl); var service : HTTPService = new HTTPService(); service.url = reqUrl; service.resultFormat = resultFormat; service.method = URLRequestMethod.GET; if(onResultHandler != null) service.addEventListener(ResultEvent.RESULT,onResultHandler); if(onFaultHandler != null) service.addEventListener(FaultEvent.FAULT,onFaultHandler); if(onInvokeHandler != null) service.addEventListener(InvokeEvent.INVOKE,onInvokeHandler); service.send(parameters); } catch (error:Error) { trace("HTTPService request remote data error : " + error.message); } } /** * requestRemoteData2 use URLLoader * @param reqUrl * @param parameters (default = null) * @param dataFormat(default = URLLoaderDataFormat.TEXT) * @param resultfun (default = null) * @param failFun (default = null) * */ public static function requestRemoteData2(reqUrl:String,parameters:Object = null,dataFormat:String=URLLoaderDataFormat.TEXT,resultfun:Function = null,failFun:Function = null):void{ try{ reqUrl = StringUtil.trim(reqUrl); // var varVals:URLVariables = new URLVariables(); for(var ps:String in parameters){ // varVals[ps] = postParam[ps]; reqUrl += ("&" + ps + "=" + parameters[ps]); // trace("varVals ---> " + varVals[ps]); } trace("XML get url ---> " + reqUrl); // trace(urlReq.url+"?"+(urlReq.data as URLVariables).toString()); var urlReq:URLRequest = new URLRequest(reqUrl); urlReq.method = URLRequestMethod.GET; // urlReq.data = varVals; var loader:URLLoader = new URLLoader(); loader.dataFormat = dataFormat; loader.load(urlReq); if(resultfun != null) loader.addEventListener(Event.COMPLETE,resultfun); if(failFun != null) loader.addEventListener(IOErrorEvent.IO_ERROR,failFun); }catch(error:Error){ trace("URLLoader request remote data error : " + error.message); } } } }