nodejs实现webservice问题总结
生活随笔
收集整理的這篇文章主要介紹了
nodejs实现webservice问题总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
庫,工具
node-soap
soapui
創建
注意args里參數順序
const soap = require('soap'); let URL = "你的wsdl路徑,可以是url或者本地文件"; // 注意參數順序!!!!!!!!! let args = {key1: val1,key2: val2 }; // promise創建 let client = await soap.createClientAsync(URL);// callback創建 soap.createClient(url, function(err, client) {client.MyFunction(args, function(err, result) {console.log(result);}); });個人喜歡promise形式,之后調用其它函數都是可以兩種方式實現的,若是異步形式,需要在你調用的函數名后添加 "Async"。
調用
參數數據只有一層沒什么特殊,如:
args = {key1: val1,key2: val2 }若是參數里又套了一層,node-soap是不會根據wsdl自動生成帶有namespace prefix的數據,傳到服務器之后會解析xml失敗。
如:
let val2: Array<dataType> = [{key3: val3}]; let args = {key1: val1,key2: val2 }這個時候就需要在傳入數據時做些額外工作,修改為:
let val2: Array<dataType> = [{key3: val3}]; let args = {key1: val1,key2: {dataType: val2} }上面這種dataType是生成xml時,其類型在xml中有聲明;若是沒有聲明,就又是另一中寫法,如:
// dataType或namespace prefix在生成xml未聲明 let val2: Array<dataType> = [{key3: val3}]; let args = {key1: val1,key2: val2 }需改寫為(此處用使用Array<string>是參考soapui生成的namespace prefix,具體其它類型實現應該可通用);
let val2: Array<string> = [val3,val4]; let args = {attributes: {'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'},key1: val1,key2: {"arr:string": val2} } https://stackoverflow.com/que...總結
以上是生活随笔為你收集整理的nodejs实现webservice问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入解读MySQL8.0 新特性 :Cr
- 下一篇: html_javascript