【解决方案实施中心】如何连接SOAP风格WebService的API接口
评论
收藏

【解决方案实施中心】如何连接SOAP风格WebService的API接口

经验分享
萧然
2024-02-01 19:46·浏览量:562
萧然
发布于 2024-02-01 16:03更新于 2024-02-01 19:46562浏览

问题1: 什么是SOAP风格的WebService:

SOAP(Simple Object Access Protocol)是一种用于在网络上进行交互的通信协议。SOAP 风格的 Web 服务是一种使用 SOAP 协议进行通信的网络服务。这种服务通常以一种基于 XML(eXtensible Markup Language)的格式传递数据,通过 HTTP 或其他协议进行消息传递。

以下是 SOAP 风格的 Web 服务的一些关键特点:

  1. 协议: 使用 SOAP 协议进行通信。SOAP 是一种基于 XML 的协议,用于在网络上进行结构化的信息交换。
  2. 消息格式: SOAP 消息通常是以 XML 格式编码的。消息中包含了操作的请求和响应,以及相关的参数和数据。
  3. 通信方式: SOAP Web 服务的通信通常是通过 HTTP 或 HTTPS 进行的。虽然 SOAP 本身并不依赖于 HTTP,但在实践中,它通常与 HTTP 一起使用。
  4. 服务描述: 通常使用 WSDL(Web Services Description Language)来描述 SOAP Web 服务的接口和操作。WSDL 是一种 XML 格式的文档,定义了服务的输入、输出和可用操作。
  5. 强类型: SOAP 是一种强类型协议,它支持定义数据类型和结构,使得数据在客户端和服务端之间可以被正确解释和处理。
  6. 中立于平台: 由于使用了标准的 XML 和 HTTP,SOAP Web 服务通常是平台无关的,可以在不同的操作系统和编程语言之间进行通信。
  7. 一个典型的 SOAP Web 服务交互包括客户端向服务端发送一个 SOAP 请求,服务端处理请求并返回一个 SOAP 响应。这种风格的 Web 服务在企业级应用中常见,特别是在需要强大的消息传递和跨平台通信的场景下。
  8. 需要注意的是,随着时间的推移,RESTful 风格的 Web 服务在许多场景中变得更为流行,因为它更简单、轻量级,更符合现代 Web 应用的需求。RESTful Web 服务通常使用 JSON 格式传递数据,而不是 XML。


问题2:拿到一个API接口链接结尾为WSDL时,我们该怎么访问此接口???

一、读懂该接口内容

在浏览器里打开该链接,我们会看到一个XML结构的代码,如下:

a 找到wsdl: wervice 和port  name 等于链接里最后的这个路径名称的节点

b 在其下面有个location的链接,复制该链接并在浏览器里打开

至此,我们就发现了该SOAP 风格的 Web 服务API的结构了, 一共两个参数,1是MsgHeader参数, 应该是个头信息验证,2是InputCollection, 应该就是我们要传入的数据内容了


二.在python中连接 SOAP 风格的 Web 服务通常需要使用专门的库,其中 zeep 和 suds-jurko 是两个常用的选择。以下是使用这两个库的一般步骤:

1. 使用 zeep 库:

# 1.安装 zeep 库:
pip install zeep 
# 2.创建 SOAP 客户端并调用方法:
from zeep import Client # 创建 SOAP 客户端 
client = Client('http://www.example.com/webservice?wsdl') # 调用 Web 服务的方法
result = client.service.process(MsgHeader=msg_header, InputCollection={'P_MODIFIERSLIST': data_list})
print(result) 
  • 处理返回的 SOAP 响应: zeep 会将 SOAP 响应解析为 Python 对象,你可以按照返回的结构进行访问。
  • 2.使用 suds-jurko 库:
# 1.安装 suds-jurko 库:
pip install suds-jurko 
# 2.创建 SOAP 客户端并调用方法:
from suds.client import Client # 创建 SOAP 客户端 
client = Client('http://www.example.com/webservice?wsdl') # 调用 Web 服务的方法 
result = client.service.process(MsgHeader=msg_header, InputCollection={'P_MODIFIERSLIST': data_list})
print(result) 
  • 处理返回的 SOAP 响应: suds-jurko 也会将 SOAP 响应解析为 Python 对象,你可以按照返回的结构进行访问。
  • 选择 zeep 还是 suds-jurko 库取决于你的需求和个人偏好。通常而言,zeep 是较新且更为推荐的选择,因为它支持较新的 Python 版本,且具有更好的性能和更完整的特性。
  • 在实际使用中,请根据你连接的具体 Web 服务和相关文档,调整请求的参数和处理返回结果的方式。
  • Ps: 如果对你有一点点的帮助,请不要吝啬的给我点个赞吧,这会是我持续整理分享的动力,另外有什么更好的建议或者意见欢迎在评论区里一起探讨共同进步


收藏2
全部评论1
最新
发布评论
评论