本篇文章给大家带来的内容是关于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 小时前发布
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的问题分析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号