您好,欢迎访问一九零五行业门户网

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...专栏
文章详情
前往火星中                                                                                                                                                                                        122                                                                                                                                                                                                                                                                                                                                                            
                                                   20 小时前发布                                                                                            
nodejs实现webservice问题总结
node.js
javascript
                                               16 次阅读                                                 ·                                                 读完需要 6 分钟
1
库,工具
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的问题分析的详细内容。
其它类似信息

推荐信息