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…

    原文作者:前往火星中
    原文地址: https://segmentfault.com/a/1190000018326713
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞