在3个月多前就写了 想封装as3(flash cs3)的soap(Web Services)调用功能 ,当时想找人一起写,后来一直没有人参与,再后来自己也忙的一塌糊涂,所以把进度给耽误了,一直的一点一点的磨到现在,也只是访问.net的webservice包装(主要是没有用过其他语言编写的webservice,希望有朋友提供一些,或者自己去封装一下).
下载地址:http://www.roading.net/as3/ws.rar(包括源代码和测试文件)
主要功能有: *函数列表以及对于参数列表的解析. *访问队列 *提交数据格式的自动生成. *参数长度和类型的判断 *错误状态的捕获 *返回数据的解析(得到object/array格式数据,参考:AS3:转换XML到Object----XMLToObject)
测试代码:
程序代码 import net.roading.net.WebService; // import flash.events.EventDispatcher; // var ws:WebService = new WebService("http://www.roading.net/WebService/test.asmx"); //var ws:WebService = new WebService("http://www.wapit.cn/WebServices/Weather.asmx"); //var ws:WebService = new WebService("http://webservice.k-zone.cn/URLToHtmlService/URLToHtmlService.asmx"); ws.onLoad = function(e) { trace(this.getWsInfo()); } ws.onError = function(e) { trace(e.toString()); } // var sr:EventDispatcher = ws.call("getAge",'122',123); sr.addEventListener("complete", completeHandler); sr.addEventListener("error", errorHandler); function errorHandler(e) { trace('error'); for(var i in e.info) trace(i,"=======",e.info[i]); } function completeHandler(e) { trace("-------------------------"); trace("getAge result:"); trace(e.xml); trace(e.data); } // var sr1:EventDispatcher = ws.call("getTime"); sr1.addEventListener("complete", sr1completeHandler); function sr1completeHandler(e) { trace("-------------------------"); trace("getTime result:"); trace(e.xml); trace(e.data); } // var sr2:EventDispatcher = ws.call("say","i am roading","aha"); sr2.addEventListener("complete", sr2completeHandler); function sr2completeHandler(e) { trace("-------------------------"); trace("say result:"); trace(e.xml); trace(e.data); }
状态以及结果:
程序代码 /*********************************************************/ webservice的方法列表如下: method name: getTime method name: say args: {(name:str,type:'s:string') } method name: HelloWorld /*********************************************************/ error target ======= [object WebService] level ======= WebService.Call.MethodNameNotFound code ======= 找不到调用方法 Warning: 参数长度不匹配! ------------------------- getTime result: <Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Body> <getTimeResponse xmlns="http://www.roading.net/"> <getTimeResult>2007-10-31T23:09:31.4702500+08:00</getTimeResult> </getTimeResponse> </Body> <ignoreWhitespace>true</ignoreWhitespace> </Envelope> 2007-10-31T23:09:31.4702500+08:00 ------------------------- say result: <Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Body> <sayResponse xmlns="http://www.roading.net/"> <sayResult>you say:"i am roading"</sayResult> </sayResponse> </Body> <ignoreWhitespace>true</ignoreWhitespace> </Envelope> you say:"i am roading" |