当前位置: 首页 > 后端技术 > Node.js

nodejs实现webservice问题总结

时间:2023-04-03 15:37:20 Node.js

库,工具node-soapsoapui创建注意args中参数的顺序constsoap=require('soap');letURL="你的wsdl路径,可以是url也可以是本地文件";//注意参数顺序!!!!!!!!!letargs={key1:val1,key2:val2};//承诺创建letclient=awaitsoap.createClientAsync(URL);//回调创建soap.createClient(url,function(err,client){client.MyFunction(args,function(err,result){console.log(result);});});我个人比较喜欢回调形式,调用其他函数可以通过两种方式实现。如果是异步形式,需要在你调用的函数名后面加上“Async”。只有一层调用参数数据没有什么特别的,比如:args={key1:val1,key2:val2}如果参数中有另外一层,node-soap不会根据wsdl自动生成namespace前缀的数据,并传递给服务器将无法解析xml。例如:letval2:Array=[{key3:val3}];letargs={key1:val1,key2:val2}这时候需要在传入数据的时候做一些额外的工作,修改为:letval2:Array=[{key3:val3}];letargs={key1:val1,key2:{dataType:val2}}生成xml时在xml中声明了上面的dataType;如果没有声明,则是另一种写法,如://dataTypeornamespaceprefixisnotdeclaredinthegeneratedxmlletval2:Array=[{key3:val3}];letargs={key1:val1,key2:val2}需要改写为(这里使用Array指的是soapui生成的命名空间前缀,其他类型实现应该通用);让val2:Array=[val3,val4];让args={属性:{'xmlns:arr':'http://schemas.microsoft.com/2003/10/Serialization/Arrays'},key1:val1,key2:{"arr:string":val2}}https://stackoverflow.com/问...