·您当前的位置:主页 > 技术教程 > Rtmp技术 >

[FMS]Fms的WebService应用扩展

时间:2015-12-30 14:11猴子的花果山
封装了一个FMS的WS类,主要加了一个属性和一个方法ReCall() 方法,可以重新再次执行一次WS调用

封装了一个FMS的WS类,主要加了一个属性和一个方法ReCall() 方法,可以重新再次执行一次WS调用,
callcount 属性,获取被重调用的次数,

要使用的话,
load ("webservices/WebServices.asc")
load ("WS.asc")
load ("WS.asc") 必须放在 load ("webservices/WebServices.asc")之后
用new WS 代替 new WebService

  1. trace("WS ver 0.1 is load") 
  2. load ("webservices/WebServices.asc") 
  3. /**************************************************** 
  4. *  FN:WS.as Coder:25swf CreateDate:2007-7-19 
  5. * 扩展FMS自带的WebService类,增加以下方法或功能 
  6. * 修改记录 
  7. *  
  8. ****************************************************/ 
  9.  
  10. var WS = function(wsdlLocation, logObj, proxyURI, endpointProxyURI, serviceName, portName) 
  11.  this._myws = new WebService(wsdlLocation, logObj, proxyURI, endpointProxyURI, serviceName, portName) 
  12.  //为myws符加parent 
  13.  thisthis._myws.parent = this; 
  14.  //重实现WebService方法调用,更多信息可以参考WebService的实现方式 
  15.  this.__resolve = function(methodName) 
  16.     { 
  17.   return function() 
  18.         { 
  19.    var args = new Array(); 
  20.    for (var i=0; i<arguments.length; i++) 
  21.    { 
  22.     args[i] = arguments[i]; 
  23.    } 
  24.             args.unshift(methodName); 
  25.    var callback = this._myws.stub.invokeOperation.apply(this._myws.stub, args); 
  26.    callback.callcount = 1
  27.    callback._myws = this._myws; 
  28.    callback._historyforcall = this._historyforcall; 
  29.    callback.ReCall = function() 
  30.    { 
  31.     callback.callcount++; 
  32.     var tempcallback = this._myws.stub.invokeOperation.apply(this._myws.stub, args); 
  33.     tempcallback.onResult = function() 
  34.     { 
  35.      callback.onResult.apply(callback,arguments) 
  36.     } 
  37.     tempcallback.onFault = function() 
  38.     { 
  39.      callback.onFault.apply(callback,arguments) 
  40.     } 
  41.    } 
  42.             return callback; 
  43.         } 
  44.     } 
  45. //========================================================================================================================= 
  46. //覆写WebService 方法,使其指向WS,从而让WS能触法事件 
  47. //========================================================================================================================= 
  48. var o = WebService.prototype; 
  49. o.onLoad = function(wsdl) 
  50.  //当onLoad方法被触发时,尝试把该方法传给WS(parent) 
  51.     this.parent.onLoad(wsdl) 
  52.  
  53. o.onFault = function(fault) 
  54.  //同onLoad 
  55.     this.parent.onFault(fault) 
  56. //========================================================================================================================= 
  57. //实现 WebService 所有的方法,并把方法指向 _myws 
  58. //========================================================================================================================= 
  59. var o = WS.prototype; 
  60. //获取 WebService 提供的某个方法,但尝试过使用该方法,反回的是一个Object,因时间关系没有仔细研究该Object 
  61. o.getCall = function(operationName) 
  62.     return this._myws.getCall(operationName); 
  63. //获取 WebService 某个方法的参数列表数组(仅仅是传入参数类型),该列表数组中的元素是Object类型,里边包括参数名,参数类型等信息 
  64. //WS 在对 WebService 进行扩展时,将使用到该方法 
  65. o.getInputParameters = function(operationName) 
  66.     return this._myws.getInputParameters(operationName); 
  67. //同getInputParameters,但该方法获取的是传出参数类型,关于传入传出的参数类型关系可以参考C#,java等高级语言关于这方面的知识 
  68. o.getOutputParameters = function(operationName) 
  69.     return this._myws.getOutputParameters(operationName); 
  70.  
  71. o.onLoad = function(wsdl) 
  72.     // this method will be called once the WSDL has been parsed and 
  73.     // the proxy created. It is meant to be overridden. 
  74.  // 该方法在WSDL被成功解析并且代理方法被成功创建时调用,这意味着你需要重写该方法 
  75.  // 该方法在WS扩展后,将被WebService调用,因而假如你重构了WebService的onLoad事件,WS的onLoad事件将不会被调用 
  76.  
  77. o.onFault = function(fault) 
  78.     // this method will be called if the WSDL cannot be parsed and 
  79.     // the proxy cannot be created. It is meant to be overridden. 
  80.  // 同onFault,不同在于WSDL分析出错时会调用 
  81. //使用时,可直接在 callback = wsobject.wsfunction() 后使用 callback.ReCall() 或 callback.callcount 属性 

 

热门文章推荐

请稍候...