You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJs中运行SOAP请求,传递参数并获取校验响应?

Node.js 调用SOAP请求完整实现指南

前置准备

首先安装所需依赖:

npm install soap express

完整可运行代码示例

以下示例将SOAP调用和你熟悉的REST路由结合,你可以直接复用已有的REST服务逻辑:

const express = require('express');
const soap = require('soap');
const app = express();
app.use(express.json());
const router = express.Router();

// SOAP调用封装函数
async function callSoapGetStudent(studentId) {
  // 替换为实际的SOAP服务WSDL地址
  const wsdlUrl = 'https://你的实际SOAP服务地址?wsdl';
  // 创建SOAP客户端
  const client = await soap.createClientAsync(wsdlUrl);
  // 传递参数调用SOAP方法,方法名需和WSDL里定义的一致
  const [result] = await client.getStudentAsync({ id: studentId });
  // 返回解析后的JSON格式响应
  return result;
}

// 你熟悉的REST路由,在这里调用SOAP函数
router.post('/soapGetStudent', async (req, res) => {
  try {
    // 从REST请求里拿参数传给SOAP调用函数
    const studentId = req.body.id;
    // 调用SOAP函数获取响应
    const soapResult = await callSoapGetStudent(studentId);
    // 在这里校验SOAP返回的响应
    if (!soapResult?.studentName) {
      return res.status(400).json({ msg: '未找到对应学生' });
    }
    // 返回结果给前端
    res.json({ data: soapResult });
  } catch (err) {
    // SOAP调用报错处理
    res.status(500).json({ msg: 'SOAP调用失败', error: err.message });
  }
});

app.use('/api', router);
app.listen(3000, () => {
  console.log('服务运行在 http://localhost:3000');
});

关键环节说明

  • 函数调用时机:你可以选择两种触发方式,一是像上面一样挂载到REST路由,收到REST请求时触发SOAP调用;二是单独写脚本直接执行callSoapGetStudent函数,不需要启动web服务,直接跑脚本就能拿到结果
  • 参数传递:入参直接按WSDL定义的字段名传JavaScript对象即可,soap库会自动拼接成符合规范的SOAP XML报文,不需要手动处理XML格式
  • 响应校验:soap库会自动把返回的SOAP XML报文解析成JavaScript对象,你直接取对应字段做非空、格式校验即可,和处理普通接口返回的JSON没有区别

测试方法

  • 如果是挂载到REST路由的形式,直接用Postman、Apifox等工具调用http://localhost:3000/api/soapGetStudent,传参{"id": 123}就能拿到返回结果
  • 如果是单独脚本的形式,直接执行node 你的脚本文件名.js,在控制台打印soapResult就能看到返回内容

内容的提问来源于stack exchange,提问作者Kim Seokjin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 06:00:05