使用Python进行SOAP API调用

2025年1月5日 | 阅读 4 分钟

什么是 SOAP?

SOAP,或简单对象访问协议,是一种 API 交互方法。它使用 XML 信息编码进行特征描述,是一种完全安全且稳定的方式。它允许在多个节点之间传输已建立的信息。与 REST API 使用 JSON 不同,它采用 XML,后者具有简洁且稳定的语法。由于 XML 作为消息格式,它允许在运行不同操作系统上的应用程序之间进行通信。Python 提供了方便的库来调用 SOAP API,从而简化了应用程序与基于 SOAP 的服务的集成。

本文将简要介绍如何使用 Python 调用 SOAP API。

XML

XML 代表可扩展标记语言,它在文档中提供结构化数据。它提供了可信赖的语法,有助于定义规则,以便计算机和人类都能快速地以可理解的格式进行编码。它提供了一种结构化的数据表达方式,使其适合跨多个应用程序和系统进行数据传输。

下面提供了一个简单的 XML 示例来说明其结构

在 Python 中进行 SOAP 调用

Python 中有许多可用于调用 API 的包。有各种库可用,例如 suds、zeep 和 requests。

  • Requests:在处理 Web 自动化时,使用 requests 库向指定的网站发送 HTTPS 请求是一种常见的做法。通过该库,应用程序和网站可以更轻松地通信,从而有助于任务自动化和数据检索。用户可以通过该库发送查询来执行数据检索、登录和表单提交等任务,而无需主动与网站交互。

可以使用 pip 命令下载此库

  • Zeep:这个流行的 Python 库主要用于与使用 SOAP(简单对象访问协议)的 Web 服务进行交互。它提供同步和异步请求以及用于访问 Web 服务的直观客户端界面。Zeep 使开发人员能够轻松设计 Python SOAP 客户端应用程序,并将其与其他系统集成以进行跨平台数据交换。

可以使用 pip 命令下载此库

  • suds:这个 Python 模块旨在作为基于 SOAP 的在线服务的客户端。该模块使用面向对象协议来实现远程过程调用。该模块使开发人员能够轻松地与基于 SOAP 的 Web 服务通信并执行各种远程任务。

可以使用 pip 命令下载此库

使用 Requests 库

输出

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <m:CountryIntPhoneCodeResponse xmlns:m="http://www.oorsprong.org/websamples.countryinfo">
      <m:CountryIntPhoneCodeResult>91</m:CountryIntPhoneCodeResult>
    </m:CountryIntPhoneCodeResponse>
  </soap:Body>
</soap:Envelope>
<Response [200]>

定义了 XML 语法和 SOAP URL。然后使用 requests() 函数调用 API,并输出响应代码 200、电话代码和国家代码。响应 200 表明网站已获得自动化访问权限。

使用 Zeep 库

Python 中与 SOAP 服务交互的一个流行选择是 zeep 库。它简化了处理响应和生成 SOAP 调用的过程。这是一个简单的 zeep 示例

输出

The phone Code for IN is + 91
The phone Code for US is + 1
1

首先定义 WSDL URL。您可以通过访问基本 URL 来获取它。然后将创建标题并与方法 URL 和服务 URL 一起使用。然后将在 Zeep 客户端中初始化 WSDL URL。现在将联系 zeep 服务并提供所需的结果。

REST API 与 SOAP API

REST API 和 SOAP API 是两个广受欢迎的协议,用于在不同的软件程序之间共享数据。Representational State Transfer,即 REST,是一种允许以多种格式(包括 XML 和 JSON)交换数据的协议。然而,SOAP,即简单对象访问协议,仅支持 XML 格式。

与 SOAP API 相比,REST API 被认为更轻便、更灵活。由于它们是数据驱动的,REST API 专注于应用程序之间传输的数据。它们使用 GET、POST、PUT 和 DELETE 等 HTTP 方法来处理数据。相反,SOAP API 由于使用多种操作和功能来执行任务而更复杂,更难实现。

REST API 的简洁性和用户友好性是其主要优势之一。与 SOAP API 相比,REST API 由于其简单直观的架构而更快、更高效。此外,它们的扩展性更强,能够处理大量请求而不会出现任何延迟。相反,SOAP API 可能更慢、更复杂,这可能会降低它们在某些类型应用程序中的有效性。

结论

Python 广泛的库生态系统使其更容易发出 SOAP API 请求。一种简单地使用 requests、zeep 和 suds 库与基于 SOAP 的 Web 服务进行交互的方法。无论它是为了获取天气数据还是访问其他 SOAP 服务,这些示例都有助于快速概述 SOAP API。


下一主题Io-error-in-python