0

0

nodejs实现webservice的问题分析

不言

不言

发布时间:2019-02-28 13:32:25

|

3996人浏览过

|

来源于segmentfault

转载

本篇文章给大家带来的内容是关于nodejs实现webservice的问题分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

库,工具

node-soap
soapui

LOVESTUdio多校园网络店铺
LOVESTUdio多校园网络店铺

主要更新介绍: 完美整合Discuz!论坛,实现一站式登陆、退出、注册; 同步所有会员资料; 新增购物车功能,商品购买更加方便、快捷; 新增部分快捷菜单,网站访问更加方便; 限制首页商品、店铺标题显示长度; 修正会员后台管理不能更改密码的错误; 完善商品显示页面所有功能链接; 修正后台标签管理部分错误; 修正前台学校列表不按后台顺序显示的错误; 修正搜索功能中学校名称过长导致显示紊乱的现象; 修正

下载

创建

注意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 = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}

这个时候就需要在传入数据时做些额外工作,修改为:

let val2: Array = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}

上面这种dataType是生成xml时,其类型在xml中有声明;若是没有声明,就又是另一中写法,如:

// dataType或namespace prefix在生成xml未声明
let val2: Array = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}

需改写为(此处用使用Array是参考soapui生成的namespace prefix,具体其它类型实现应该可通用);

let val2: Array = [
        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问题总结

                                               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 = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}

这个时候就需要在传入数据时做些额外工作,修改为:

let val2: Array = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: {
        dataType: val2
    }
}

上面这种dataType是生成xml时,其类型在xml中有声明;若是没有声明,就又是另一中写法,如:

// dataType或namespace prefix在生成xml未声明
let val2: Array = [
        {
            key3: val3
        }
    ];
let args = {
    key1: val1,
    key2: val2
}

需改写为(此处用使用Array是参考soapui生成的namespace prefix,具体其它类型实现应该可通用);

let val2: Array = [
        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的问题分析


你可能感兴趣的


评论                                                    

默认排序                        时间排序



载入中...

显示更多评论


相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1878

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2085

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1000

2024.11.28

promise的用法
promise的用法

“promise” 是一种用于处理异步操作的编程概念,它可以用来表示一个异步操作的最终结果。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise的用法主要包括构造函数、实例方法(then、catch、finally)和状态转换。

298

2023.10.12

html文本框类型介绍
html文本框类型介绍

html文本框类型有单行文本框、密码文本框、数字文本框、日期文本框、时间文本框、文件上传文本框、多行文本框等等。详细介绍:1、单行文本框是最常见的文本框类型,用于接受单行文本输入,用户可以在文本框中输入任意文本,例如用户名、密码、电子邮件地址等;2、密码文本框用于接受密码输入,用户在输入密码时,文本框中的内容会被隐藏,以保护用户的隐私;3、数字文本框等等。

396

2023.10.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1973

2024.08.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

3

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

26

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.6万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

Node.js-前端工程化必学
Node.js-前端工程化必学

共19课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号