百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> nodejs实现webservice的问题剖析
分享文章到:

nodejs实现webservice的问题剖析

发布时间:09/01 来源:未知 浏览: 关键词:

本篇文章给大家带来的内容是关于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...







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的问题剖析的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板