如何在 NodeJs 中运行 SOAP 请求?

2024-03-15

起初这听起来像是一个重复的问题,但我已经浏览了我找到的所有博客/教程/视频,但没有一个真正说明了如何运行该请求。示例:对于 RESTful 请求,您在 NodeJs 中编码,点击路由 (https://localhost/3000/api/getStudent) 并获取响应。在代码中使用 router.post('/getStudent', async (req,res) => { // 在此处检查响应或进行操作 })

但在肥皂中编码完所有功能后,如下所示-

  1. https://medium.com/metrosystemsro/with-node-js-wrap-backend-soap-webservices-in-a-restful-api-a96887575046 https://medium.com/metrosystemsro/with-node-js-wrap-backend-soap-webservices-in-a-restful-api-a96887575046
  2. https://dafabulousteach.wpcomstaging.com/2016/05/19/making-a-soap-call-with-node/ https://dafabulousteach.wpcomstaging.com/2016/05/19/making-a-soap-call-with-node/
  3. https://betterprogramming.pub/how-to-perform-soap-requests-with-node-js-4a9627070eb6 https://betterprogramming.pub/how-to-perform-soap-requests-with-node-js-4a9627070eb6

在哪里调用该函数以及如何传递参数并测试它?我如何检查响应?


为了将其置于您所询问的上下文中,SOAP 服务只是侦听具有 XML 负载的 POST 请求的地址的服务器。就是这样。

因此,如果您的 SOAP Web 服务地址是http://example.com/service_endpoint然后您可以通过在此地址发出 POST HTTP 请求并向其发送 SOAP XML 消息作为负载来调用 Web 服务。

显然,请求中的 XML 消息必须与服务期望的内容相匹配,并且您知道如何通过阅读文档或使用 WSDL 来构建 XML https://d-petre-bogdan.medium.com/the-wsdl-is-not-the-soap-web-service-97f307c4a90bSOAP Web 服务。

因此,如果您知道如何向 REST 服务地址发出 POST HTTP 请求并向其发送 XML 有效负载(尽管对于 REST,您通常使用 JSON),那么您就已经知道如何调用 SOAP Web 服务。

现在,为了方便起见,由于 SOAP 是一种协议,您调用服务的方式以及它期望的 XML 有效负载由 WSDL 描述,您可以使用读取 WSDL 的工具并创建一个可以像调用任何其他 API 一样调用的客户端 API。代码中的其他方法。这些工具为您处理 HTTP POST 请求的详细信息,以及将任何参数编组为 XML。这可能是您感到困惑的地方。

让我们举个例子。

比如说,如果您有一个服务,其操作名为savePerson它接受firstName and lastName作为参数并在 WSDL 中进行描述,那么您的工具可能会生成一个具有此类方法并接受Person对象,你可以这样称呼它:

var response = client.savePerson({ "firstName": "Kim", "lastName": "Seokjin" });

或此的一些变体。然后您会收到一个响应,您可以像任何其他对象一样读取该响应。相反,你可能会得到一个承诺,或者一个事件,或者客户选择的任何工作方式。当您使用此代码时,会发生的情况是client在后台为您执行 HTTP POST 请求并将 person 对象编组为 XML,如下所示:

POST /service_endpoint
Host: http://example.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
 <SOAP-ENV:Body>
  <savePerson>
   <person>
     <firstName>Kim</firstName>
     <lastName>Seokjin</lastName>
   </person>
  </savePerson> 
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

如果您不想从 WSDL 生成客户端,显然您可以使用您喜欢的任何 HTTP 库自行发送此请求。但人们更喜欢使用生成的客户端,而不是直接处理这些细节(即发出 HTTP 请求、解析 XML 等)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 NodeJs 中运行 SOAP 请求? 的相关文章

  • 无法安装js-bson

    我正在使用Windows 7 64位 尝试安装bson作为mongodb的依赖项 我收到此错误 npm WARN package json email protected cdn cgi l email protection No READ
  • CSS 未使用 req.params 或其他内容加载

    我对节点 表达等非常陌生 我制作了一个博客应用程序 但遇到了问题 我正在使用 mongoose node express 和 ejs 当我打电话时 router get posts function req res Post find fu
  • 使用 npm API 检索带有版本的私有 npm 包列表,可能吗?

    我在 npmjs org 上有一个私有 npm 注册表 其中包含几个私有 npm 包 我们正在转向内部私人 npm 注册表 verdaccio 长话短说 使用我们的 AWS 基础设施 verdaccio 服务器可能会因多种原因而被重建 主要
  • 如何使用 Node.js 解决“找不到模块”错误?

    从 GitHub 拉取模块并按照说明构建它后 我尝试使用以下命令将其拉入现有项目 gt npm install faye 这似乎可以解决问题 gt npm list home dave src server email protected
  • 无对等证书例外 - Volley 和具有自签名证书的 Android

    我正在尝试让我的应用程序通过 https 与我的服务器通信 由于我不想付费让受信任的 CA 签署我的服务器证书 解决方案是使用自签名证书 因此 我创建了 caconfig cnf 如下所示 ca default ca CA default
  • 数据包无序。得到:80 预期:0 node.js

    这是我的 非常简单 代码 var connection mysql createConnection infosDB connection connect connection query SELECT FROM action functi
  • 安装 npm 包时自动安装类型定义

    有没有办法配置npm以这样的方式 每当我安装一个包时 它都会 检查里面是否有类型定义 如果没有 请尝试安装 types PACKAGE与 save dev flag 理想情况下 我希望这能够自动发生 作为插件或其他东西 而不需要编写限制 A
  • MongoDB 查询返回空数组

    有一个基本的 Express 应用程序连接到几乎 0 5 GB 的 MongoDB 数据库 当我运行时 router get function req res next medical data find State CT function
  • 当我使用nodemon和ts-node时,为什么节点检查器没有启动?

    我有一个用打字稿编写的简单节点服务器 我的 package json 配置为 scripts build tsc dev nodemon watch src e ts json exec ts node src server ts debu
  • Nest.js - 在猫鼬模式中创建索引

    如何使用 Nest js 在猫鼬模式中创建属性索引 我尝试添加索引作为属性选项 但索引尚未创建 Schema export class Schema extends Document Prop id string Prop required
  • 在 Node.js 中每 4 小时安排一次任务

    如何使用 Node js 中的 node schedule 安排任务在 4 小时后运行 目前我的代码如下 但它没有按预期响应 var schedule require node schedule var task schedule sche
  • 从 json 文件加入时添加角色 (autorole)

    我对 JS 相当陌生 为了学习 我决定为 Discord 制作一个机器人 我学到了很多并且正在继续学习 我有一个 autorole 的想法 我知道传统的做法 bot on guildMemberAdd member gt var role
  • 在浏览器中打开的 .mhtml 文件中填写输入

    我想对 mhtml 文件运行 e2e 测试 即填写表格 在 mhtml 文件上查看和提取数据效果非常好 但我无法填写任何内容input字段 既不是手动也不是通过木偶操作者 你可以用这个试试 mhtml 文件 https gist githu
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form
  • 如何使用 node.js / mongodb 在 HTML 中显示任意、无模式数据

    我使用 mongodb 将应用程序错误日志存储为 json 文档 我希望能够将错误日志格式化为 HTML 而不是将纯 json 返回到浏览器 日志是完全无模式的 它们可以随时更改 因此尝试执行此操作 在 Jade 中 是没有用的 var i
  • Node.js 客户端中的 Windows 集成身份验证

    当使用node js作为客户端时 是否可以使用Windows集成身份验证连接到服务器 例如连接到IIS时 我对此的搜索仅出现使用 node js 作为服务器的结果 2015 年更新 现在有一些模块实现了 Windows 集成身份验证 节点
  • 节点异步循环 - 如何使该代码按顺序运行?

    我知道有几个关于此的帖子 但根据我发现的那些帖子 这应该可以正常工作 我想在循环中发出 http 请求 并且不希望循环迭代 直到触发请求回调 我正在使用异步库 如下所示 const async require async const req
  • 无法使用 Jade 模板包含相对路径文件

    当我尝试将文件包含在同一文件夹中时 收到以下错误 the filename option is required to use include with relative paths 有两个文件 索引 jade 项目列表 jade cont
  • NodeJS 路由器负载太大

    我在 Nodejs 应用程序中创建休息端点 如下所示 在我的 server js 中 我有以下代码 var express require express var app express app use express json limit
  • 运行 pm2 记录错误 SyntaxError: Unexpected token

    我想查看我的项目的日志 Steps 我克隆了一个套接字应用程序 然后我跑npm install pm2 g安装pm2 I run pm2 start 有用 它显示我的套接字应用程序的表格 但如果我跑pm2 logs查看日志 存在这样的错误

随机推荐

  • 并行运行过程 - Oracle PL/SQL

    我正在尝试使用 dbms scheduler 并行运行存储过程 Oracle PL SQL 但出现类似未知作业的错误 我也尝试过 dbms job 这里出现错误 必须声明标识符 dbms jobs 有人可以帮我吗 以下是我尝试过的两种方法
  • 如何制作 text-decoration: 下划线和 2px 填充?

    我喜欢听话的前端开发人员必须创建带有 2 像素填充的下划线 而不是默认的 1 像素 是否存在简单的解决方案 PS 是的 伙计们 我知道 div 具有黑色背景颜色和 1px Npx 和位置 相对 但它太慢了 对于交叉浏览 最好使用text u
  • 替换git中的master分支并防止快进

    我在 github 上有一个库 大约一年前 我完全重写了该应用程序 但不向后兼容 它位于一个名为 结构化 的分支上 现在大多数安装该库的人都在使用该分支 我想将其设为主分支并将当前主分支移至 旧版 我不希望使用旧主机的人能够快进到新主机 因
  • 如何使用 Seed.rb 有选择地填充开发和/或生产数据库?

    我正在使用 seeds rb 来填充我的开发和生产数据库 我通常用虚拟数据填充第一个 然后用我的应用程序运行所需的实际最小数据 例如第一个用户等 填充后者 如何在 Seed rb 中指定每个数据的环境 鉴于我知道 group 是一个 Gem
  • 何时应使用链表的现实世界示例有哪些?

    另一位程序员提到 在他的职业生涯中 他们还没有在任何专业软件中找到使用链表数据结构的用例 我一时想不出什么好的例子 他主要是 C 和 Java 开发人员 谁能举一些例子来说明这是解决特定现实世界问题的正确数据结构 Related 链表的实际
  • 询问 Python 值“是否可散列”

    我感兴趣的是采用任意字典并将其复制到新字典中 并一路改变它 我想做的一项改变是交换键和值 不幸的是 有些价值观本身就是命令 但是 这会生成 不可散列类型 dict 错误 我真的不介意只是将值字符串化并为其提供密钥 但是 我希望能够做这样的事
  • 是否可以在 Chrome 开发者工具元素面板中选择多个元素?

    是否可以在 Chrome 开发者工具元素面板中一次选择多个元素 对于删除多个同级元素或快速重新排序非常有用 我期望Command Click or Shift Click这样做但没有成功 答案是否定的 在 Chrome 开发工具中一次无法选
  • Python kivy - 如何减少TextInput的高度

    我正在使用 kivy 为应用程序制作一个非常简单的 GUI 没什么复杂的 布局非常简单 尽管如此 我在 TextInputs 方面遇到了困难 它们总是以全高显示 我无法设法使它们调整到 合理的 文本高度 如高度 我正在使用 kv 文件样式
  • 使用 QQuickImageProvider 的正确方法是什么?

    我需要动态选择 qpixmaps 以显示在 QML 图像项中 该 qpixmaps 应该从源 qpixmap 中裁剪出来 我将从 QML 文件中设置它 我希望它们能够根据 QML 的第一个需求被 C 代码裁剪并缓存以供将来使用 对于动态图像
  • 使用 Javascript 重新定位

    我试图根据特定条件在页面上重新定位 div if somecondition document getElementById Div1 setAttribute style position absolute left 297px top
  • Android Studio 上的 Flutter 崩溃

    Android studio崩溃并且无法运行项目 flutter升级到2 0后 flutter doctor 没有问题 dart 修复不起作用 建议在这里 Flutter项目升级到2 0 0后编译错误 https stackoverflow
  • 在网格视图上突出显示所选项目

    我试图突出显示 gridview 上的选定项目 使用适配器动态填充 但它不起作用 我做了研究 我什至尝试准确复制其他人的选择器 甚至他们将其放在 gridview 上的方式 但我无法让它工作 它只是没有做任何事情 每个项目的背景都是白色的
  • websocket消息会丢失吗?

    我目前正在开发一个 Java WebSocket 客户端应用程序 我必须确保客户端收到来自服务器的每条消息 由于连接中断 我是否可能丢失一些消息 一旦从服务器发送消息 WebSocket 基于 TCP 所以这种情况不应该发生 对吗 这有可能
  • 长双精度文字的 C++ 后缀是什么?

    在 C 和 C 中 不带后缀的浮点文字默认为double 而后缀f意味着一个float 但是获得 a 的后缀是什么long double 在不知道的情况下 我会定义说 const long double x 3 14159265358979
  • 什么是 CDI 豆?

    我有点困惑 我们将 CDI bean 称为我们注入它们的 bean Inject注释或我们使用的bean Inject他们里面 CDI豆是 CDI 可以实例化 管理和注入的类 自动满足其他对象的依赖关系 几乎任何 Java类可以由CDI管理
  • JSF/Primefaces AJAX 请求真的是异步的吗?

    我是 JSF 新手 所以我不知道我面临的行为是否正常 我有这个代码
  • PHP PDO 的单例替代方案

    这是我用来连接到我的课程MySQL数据库 正如你所看到的 我正在使用Singleton Pattern但几乎每个帖子都说这是一个非常糟糕的模式 创建数据库连接类的最佳方法是什么 有更好的模式吗 class DB extends PDO fu
  • C# 中的冗余?

    采取以下片段 List
  • com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException:当 autocommit=true 时无法调用回滚

    我在我的应用程序中使用 Jboss 5 0 和 mysql 并且会有很多并发操作 并且数据库包含相当多的记录 这个错误经常出现 时不时地 com mysql jdbc exceptions MySQLNonTransientConnecti
  • 如何在 NodeJs 中运行 SOAP 请求?

    起初这听起来像是一个重复的问题 但我已经浏览了我找到的所有博客 教程 视频 但没有一个真正说明了如何运行该请求 示例 对于 RESTful 请求 您在 NodeJs 中编码 点击路由 https localhost 3000 api get