如何使用 Axios NPM 库执行带有 XML SOAP 参数的 GET 请求?

2024-02-10

Axios 允许您使用查询和参数运行 GET 查询。有没有办法将 XML SOAP 参数传递到 Axios 请求中?

await Axios.get(url, {
  params: xmls, // Is it this?
  data: xmls, // Is it this?
  headers: { "Content-Type": "text/xml;charset=UTF-8" },
});

SOAP API 调用使用者axios.post()代替axios.get()

POST enctype 属性可以是 multipart/form-data 或 application/x-www-form-urlencoded,而对于 METHOD="GET",仅允许 application/x-www-form-urlencoded。

GET 仅发送 ASCII,当将它们以 ASCII 数据形式通过 URL 传递并作为 URL 的一部分发送时,无法以 XML 格式发送多行 TEXT。另一方面,二进制数据、图像等文件都可以通过body中的METHOD="POST"提交。

这就是为什么 POST 在 SOAP API 调用中常见而不是 GET。

const response = await axios.post(
    url,
    payload,
    {
        headers: {
            'Content-Type': 'text/xml; charset=utf-8'
        }
    }
);

我将演示一个补充计算器 SOAP 服务 https://schemasxmlsoap.azurewebsites.net/soap/envelope/ : 计算器 http://www.dneonline.com/calculator.asmx

WSDL(Web 服务描述语言)描述了一个服务的功能 基于 SOAP 的 Web 服务。

完整代码

const axios = require("axios");
const jsdom = require("jsdom");

const getAdd = async (a, b) => {
    const url = 'http://www.dneonline.com/calculator.asmx'
    const payload =`<?xml version="1.0" encoding="utf-8"?> \
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
            <soap:Body> \
                <Add xmlns="http://tempuri.org/"> \
                    <intA>${a}</intA> \
                    <intB>${b}</intB> \
                </Add> \
            </soap:Body> \
        </soap:Envelope>`
    try {
        const response = await axios.post(
            url,
            payload,
            {
                headers: {
                    'Content-Type': 'text/xml; charset=utf-8'
                }
            }
        );
        return Promise.resolve(response.data);
    } catch (error) {
        return Promise.reject(error);
    }
};

getAdd(100,200)
    .then(result => {
        // display response of whole XML
        console.log(result);

        // extract addition result from XML
        const dom = new jsdom.JSDOM(result);
        console.log('100 + 200 = ' + dom.window.document.querySelector("AddResult").textContent); // 300

    })
    .catch(error => {
        console.error(error);
    });

安装库

npm install axios jsdom

运行程序

node add.js

Result

$ node add.js
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.
xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><AddResponse xmlns="ht
tp://tempuri.org/"><AddResult>300</AddResult></AddResponse></soap:Body></soap:En
velope>
100 + 200 = 300

参考GET 与 POST https://www.diffen.com/difference/GET-vs-POST-HTTP-Requests

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

如何使用 Axios NPM 库执行带有 XML SOAP 参数的 GET 请求? 的相关文章

  • Axis2C 非官方与 Axis2C 员工

    我将开发一个应用程序 该应用程序将使用一些基于 SOAP 的 Web 服务框架 我做了一些研究 我有点喜欢 Axis2C 框架 但在一些主题中 我发现最初的 Axis2C 实现存在内存泄漏 并且它的官方开发已停止 幸运的是 有 Axis2C
  • axios - 发送表单数据和非表单数据

    我正在使用 axios 将数据发送到我的 nodejs express 服务器 如果我想发送表单数据 我会执行以下操作 并且效果很好 const formData new FormData formData append nameOfFil
  • Axios-一次发出多个请求(vue.js)

    如何使用 axios 和 vue 并行发出多个请求 由于 axios 可以被 React 和 Vue 使用 因此代码几乎相同 请务必阅读axios 文档 https github com axios axios 你可以从那里理解它 无论如何
  • PHP NuSoap 中的复杂类型

    我正在使用 PHP 中的 NuSoap 库构建一个 Web 服务 我的 Web 服务将充当客户端和供应商现有的 Web 服务之间的中间层 因此 客户端不是直接连接到供应商 而是连接到我的 Web 服务 我的 Web 服务连接到供应商并获取响
  • 无法使用 Spring 的 WebServiceTemplate 将 Http 标头添加到消息中

    我有一个相当简单的情况 我尝试将 HTTP 标头 不是 SOAP 标头 添加到我使用 Spring 发出的请求中WebServiceTemplate 我定义了一个ClientInterceptor我在哪里做 Override public
  • 使用命名空间和前缀进行 JAXB 解组

    我正在使用 JAXB 解析 SOAP 响应中的 xml 元素 我已经为 xml 元素定义了 POJO 类 我已经测试了没有命名空间和前缀的 pojo 类 其工作正常 尽管当我尝试使用命名空间和前缀进行解析时 面临以下异常 要求是解析来自 S
  • Axios 和 VueJS,函数(响应)未设置列表

    我有一个请求获取一些数据并将其添加到变量中 当我使用时 then function response this persons response data 它不分配response data to this persons但是当我执行以下操
  • 如何从后端路由内的第三方API获取?

    尝试从第三方 url 获取 JSON 数据并将其带到我的后端路由 首先 我将查询字符串输入到应用程序的 url 中 并将它们存储到变量中 并在第三方 url 中使用它 尽管来自应用程序 url 的查询字符串已正确存储 但第二个和第三个查询字
  • 为什么express服务器接收到的前端数据是未定义的?

    我目前正在开发社交媒体 Mern Stack React 应用程序 我使用 Node js 和 Express 作为我的后端服务 还使用 mongoose 来存储我的数据 并使用 axios 和 redux thunk 将后端连接到前端 到
  • 通过 PHP Curl 调用 SoapAction

    我想通过 PHP 重新连接我的路由器 控制台命令如下 curl http 192 168 178 1 49000 upnp control WANIPConn1 H Content Type text xml charset utf 8 H
  • Vue - API 调用属于 Vuex 吗?

    我正在努力寻找在 vue 模块中理想的 API 调用位置的答案 我不是在构建 SPA 例如 我的 auth 块有几个用于登录 密码重置 帐户验证等的组件 每个块都使用 axios 进行 API 调用 Axios 已经提供了异步的 Promi
  • 如何在本地重现 Jest“网络错误”-浮动错误

    当我偶尔在管道上运行测试时 我会收到不同文件的 网络错误 因为axios要求 尽管有时我根本没有收到错误 但由于某种原因 无论我做什么 我都无法在本地得到该错误 我使用相同的节点版本v12 16 1 我尝试将 testTimeout 减少到
  • twisted-suds 的优点 - 使用 python suds 肥皂库的异步方式

    我正在使用Pythonsuds https fedorahosted org suds 用于基于本地 wsdl 文件制作 SOAP 客户端的库 我的目标是使用 Twisted 作为后端 以便我以异步方式查询 SOAP 服务器 我知道这个话题
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • 为什么显示后无法清除错误消息-axios-react

    第一个问题的背景 https stackoverflow com questions 72929201 react axios showing message to user 72929320 我正在展示使用localhost 3000 u
  • WSDL 能否指示 Web 服务的 SOAP 版本(1.1 或 1.2)?

    是否可以根据 WSDL 中的信息查看 Web 服务是使用 SOAP 1 1 还是 1 2 SOAP 1 1 使用命名空间http schemas xmlsoap org wsdl soap http schemas xmlsoap org
  • CXF:在同一个soap:地址上实现多个端口?

    我们从客户那里收到了 WSDL 要求我们在我们这边实现该服务 WSDL 包含 3 个端口绑定 具有不同的名称和绑定 但相同
  • 由于 CORS 错误,POST 请求在 React axios 中被阻止[重复]

    这个问题在这里已经有答案了 我正在尝试向包含多部分数据的 API 发送 POST 请求 我在 postman 中测试了 API 一切正常 但是当我在react中调用API时 它给了我CORS错误 我交叉检查了 URL 标头和数据 对我来说一
  • 从特定 IP 地址发送 SOAP 请求

    我有一个具有多个 IP 地址的系统 但我只能从一个 IP 地址发起 SOAP 请求 我如何在 VB NET 中获得它 我从来没有这样做过 看起来很复杂 首先 阅读自定义 ASMX 客户端代理的方法 http johnwsaunders3 w
  • Java:由 HTTP 连接创建的等待连接线程存活时间很长

    我有一个服务器端代码 用于检查 SOAP 服务是否已启动 代码如下 String response while response length 0 try final URL url new URL DummySoapServiceURL

随机推荐