如何使用npm soap包在Node.js中通过字符串形式WSDL创建SOAP客户端
用字符串形式的WSDL创建SOAP客户端(Node.js soap包)
直接把WSDL字符串传给soap.createClientAsync()行不通,因为这个方法默认会把传入的字符串当作文件路径或远程URL,不会直接解析WSDL内容。结合你不能将字符串存为文件的限制,可以用下面的方式手动解析字符串生成客户端:
解决思路
利用soap包内置的WSDL类先解析字符串,再基于解析后的WSDL对象创建SOAP客户端。
完整代码示例
const soap = require('soap'); // 引入soap包内置的WSDL模块 const { WSDL } = soap; // 替换成你的实际WSDL字符串 const wsdlString = '<definitions> ... </definitions>'; // 初始化WSDL实例并解析字符串 const wsdlInstance = new WSDL(wsdlString, null, null, { suppressStack: true }); await wsdlInstance.initializePromise(); // 基于解析后的WSDL创建客户端 const client = new soap.Client(wsdlInstance); // 之后即可正常调用服务方法,示例: // const response = await client.TargetServiceMethodAsync({ param: 'test' });
补充说明
WSDL构造函数的参数中,基础URL传null即可,最后一个配置项suppressStack用于简化错误栈输出- 必须等待
initializePromise()执行完成,确保WSDL解析彻底 - 生成的
client和通过createClientAsync()创建的客户端用法完全一致,可直接调用服务提供的方法
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

