如果你需要在浏览器端使用 SOAP 服务,那么 @tjoussen/browser-soap 是一个不错的选择。此 npm 包允许在客户端上生成 SOAP 访问器,并提供了一些功能强大的工具来与 SOAP 服务进行交互。本文将详细介绍如何使用它。
安装
在开始使用之前,你需要使用 npm 安装 @tjoussen/browser-soap:
npm install @tjoussen/browser-soap
用法
生成客户端代码
首先,你需要使用 wsdl2js 工具生成 SOAP 客户端代码。wsdl2js 是一个命令行工具,它允许将 SOAP WSDL 文件转换为 JavaScript 代码。如果你不确定如何创建 WSDL 文件,可以参考在线教程或查找相关的 SOAP 服务提供商的文档。
例如,你有一个名为 Calculator 的 SOAP 服务,定义在 "http://www.dneonline.com/calculator.asmx?WSDL" 上。你可以使用 wsdl2js 工具来生成客户端代码:
npx wsdl2js -o calculator.js http://www.dneonline.com/calculator.asmx?WSDL
这将在当前目录下生成一个名为 calculator.js 的文件,其中包含与该服务交互的 JavaScript 函数。
生成 SOAP 访问器
生成客户端代码后,你需要使用 @tjoussen/browser-soap 包中的 createClient() 方法生成一个 SOAP 访问器。该方法接受两个参数:客户端代码的路径和可选的选项对象。
以下示例代码在浏览器中生成一个 SOAP 访问器:
import createClient from '@tjoussen/browser-soap'; import calculator from './calculator'; const endpointUrl = 'http://www.dneonline.com/calculator.asmx'; const calculatorClient = createClient(calculator, { endpoint: endpointUrl });
调用 SOAP 方法
生成SOAP 访问器后,你可以使用其 async 方法调用 SOAP 服务的方法。每个 SOAP 方法都映射到访问器对象的一个属性,你可以使用该属性直接调用此方法。
例如,以下代码调用 Calculator SOAP 服务的 Add 方法:
const result = await calculatorClient.Add({ intA: 1, intB: 2, });
在调用此方法时,你需要传递一个包含所有参数的对象。如果方法需要的参数是简单类型(例如 string、number、boolean 等),则直接将参数作为对象属性传递即可。如果方法需要的参数是复杂类型,则需要将其嵌套在对象中。
将 SOAP 方法封装在一个函数中
对于常用的 SOAP 方法,你可以将它们封装在一个单独的函数中,以便更容易地调用。例如:
-- -------------------- ---- ------- ----- -------- ------ -- - ----- ------ - ----- ---------------------- ----- -- ----- -- --- ------ ----------------- - ----- ------ - ----- ------ --- -------------------- -- -
此代码定义了一个名为 add() 的函数,它将两个参数作为输入,并返回它们的总和。在函数内部,它调用 Calculator SOAP 服务的 Add 方法,并返回结果。
处理 SOAP 错误
在与 SOAP 服务交互时,错误可能会发生。如果一个 SOAP 方法返回一个 SOAP 错误,则会引发一个异常。你可以使用 try/catch 块来捕捉这些异常。
例如,以下代码调用一个名为 Divide 方法的 SOAP 服务:
-- -------------------- ---- ------- --- - ----- ------ - ----- ------------------------- ----- -- ----- -- --- --------------------------------- - ----- ----- - ----------------- -
在这个示例中,Divide 方法将一个数字除以零。因此,它会返回一个 SOAP 错误,并抛出一个异常。在 try 块中,我们调用该方法并在 catch 块中捕捉异常。
结论
@tjoussen/browser-soap 是一个非常方便的 npm 包,它为在浏览器中使用 SOAP 提供了简单的 API。在这篇文章中,我们介绍了如何使用它,包括生成客户端代码、生成 SOAP 访问器、调用 SOAP 方法和处理 SOAP 错误。如果你需要使用 SOAP 服务,在客户端侧使用此 npm 包是一个不错的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a730d09270238225f5