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

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器