Flex开发技术:WebService封装篇

来源:互联网 发布:周易简单算法 编辑:程序博客网 时间:2024/06/08 15:23
 package myComponets

 import mx.managers.CursorManager;
 import mx.rpc.AbstractOperation;
 import mx.rpc.events.FaultEvent;
 import mx.rpc.events.ResultEvent;
 import mx.rpc.soap.SOAPHeader;
 import mx.rpc.soap.WebService;   
 
 public class MyWebService extends WebService
 {
  private var _callBackHandler:Function;
  private var _faultHandler:Function;
  private var _args:Array;
  
  private var ws:WebService;
  
  /**  * Construct  * @wsdl:webservice url  */
  private var wsUrl:String = "http://xxx.xxx.xxx.xxx/webservice/WebService.asmx?wsdl";
  
  public function MyWebService(url:String)
  {
   super();
   this.wsdl = url || wsUrl;
   this.loadWSDL();
   //CursorManager.setBusyCursor();
  }
  
  public function set callBackHandler(callBackHandler:Function):void
  {
   this._callBackHandler = callBackHandler;
  }
  
  public function get callBackHandler():Function
  {
   return this._callBackHandler;
  }
  
  public function set args(args:Array):void
  {   
   this._args = args;
  }
  
  public function get args():Array
  {
   return this._args;
  }
  
  public function set faultHandler(faultHandler:Function):void
  {
   this._faultHandler = faultHandler;
  }
  
  public function get faultHandler():Function
  {
   return this._faultHandler;   
  }
  
  public function initHeader(header:SOAPHeader):void
  {
   this.clearHeaders();
   this.addHeader(header);
  }
  
  public function sendOperation(functionName:String):void
  {//根据方法名动态调用WebService服务器的方法
   var operation:AbstractOperation = this.getOperation(functionName);
   //为调用的方法添加监听器,回调函数由外部动态传入
   operation.addEventListener(ResultEvent.RESULT,this.callBackHandler);
   //为调用的方法添加错误监听器,如果传入的错误处理方法为空,则调用默认的处理方法
   if(this.faultHandler != null)
   {
    operation.addEventListener(FaultEvent.FAULT,this.faultHandler);
   }
   else
   {
    operation.addEventListener(FaultEvent.FAULT,defaultFaultHandler);
   }
   //为调用的方法传参数,参数类型为Array
   operation.arguments = this.args;
   //执行调用的方法
   operation.send();
  }
  
  private function defaultFaultHandler(event:FaultEvent):void
  {
   CursorManager.removeBusyCursor();
  }
 }
}
原创粉丝点击