欢迎访问宙启技术站
智能推送

在Python中使用zeep库调用SOAP服务的几种方法

发布时间:2023-12-27 16:21:56

在Python中使用Zeep库调用SOAP服务有多种方法。Zeep是一个现代和易于使用的SOAP客户端,它提供了许多功能来处理SOAP消息和调用SOAP服务。下面是几种使用Zeep库调用SOAP服务的方法以及相应的示例代码。

1. 创建并初始化SOAP客户端

使用Zeep库调用SOAP服务的 步是创建并初始化一个SOAP客户端。通过指定WSDL文件的URL,可以创建一个客户端来与SOAP服务进行通信。

   from zeep import Client

   # 初始化SOAP客户端
   client = Client(wsdl='http://example.com/soap/wsdl')
   

2. 调用SOAP操作

一旦SOAP客户端初始化完成,就可以使用service属性来调用具体的SOAP操作。使用这种方法,可以简单地通过操作名称和所需的参数来调用SOAP服务。

   # 调用SOAP操作
   response = client.service.soap_operation(param1='value1', param2='value2')
   

3. 调用具有自定义XML请求的操作

如果需要更高级的控制,可以使用下面的方法调用具有自定义XML请求的操作。

   from zeep.helpers import serialize_object

   # 创建请求字典
   request_data = {
       'param1': 'value1',
       'param2': 'value2'
   }

   # 序列化请求对象
   serialized_request = serialize_object(request_data)

   # 调用具有自定义XML请求的SOAP操作
   response = client.service.soap_operation(__inject={'request': serialized_request})
   

4. 发送自定义的SOAP消息

对于更高级的用例,可以发送自定义的SOAP消息。可以创建一个SOAP消息对象,并使用transport属性发送消息。

   from zeep import xsd

   # 创建SOAP消息
   message = xsd.Element(
       '{http://example.com/soap/namespace}soap_operation',
       xsd.ComplexType([
           xsd.Element('param1', xsd.String()),
           xsd.Element('param2', xsd.String())
       ])
   )

   # 设置请求参数
   request_data = {
       'param1': 'value1',
       'param2': 'value2'
   }
   message = message(**request_data)

   # 使用transport属性发送SOAP消息
   response = client.transport.post_xml('http://example.com/soap/endpoint', message.toxml())
   

以上是在Python中使用Zeep库调用SOAP服务的几种方法及其相应的示例代码。根据具体的用例,可以选择适合的方法来调用SOAP服务。Zeep库提供了许多功能和选项,可以满足各种不同的需求,并简化了与SOAP服务的交互。