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

如何利用Zeep库在Python中调用SOAP协议的Web服务

发布时间:2023-12-14 13:23:31

Zeep是一个用于在Python中处理SOAP协议的库。在使用Zeep之前,首先需要安装它:

pip install zeep

安装完成后,我们就可以使用Zeep来调用SOAP协议的Web服务了。下面是一个简单的例子,我们将使用Zeep调用一个公开的SOAP协议的Web服务来获取天气信息。

from zeep import Client

# 创建一个Zeep的Client对象,指定Web服务的WSDL地址
client = Client('http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL')

# 调用Web服务的方法,传递参数
result = client.service.getWeatherbyCityName('北京')

# 打印返回的结果
print(result)

在这个例子中,我们使用Zeep创建了一个Client对象,并指定了一个公开的天气查询的Web服务的WSDL地址。然后我们调用了该Web服务的getWeatherbyCityName方法,并传递了参数'北京'。最后我们打印了返回的结果。

Zeep会根据Web服务的WSDL定义动态地创建相应的Python对象,并调用相应的方法。你只需要知道要调用的方法以及传递的参数即可,Zeep会处理底层的SOAP协议通信。

除了使用名称来调用方法外,还可以使用Zeep的namespaces属性来查找方法并调用。例如:

# 使用Zeep的namespaces属性来查找方法
method = client.namespaces.weatherWebService.getWeatherbyCityName

# 调用方法,传递参数
result = method('北京')

# 打印返回结果
print(result)

这样可以更灵活地使用Zeep调用方法。

另外,Zeep还支持处理复杂数据类型的SOAP消息。例如,如果Web服务的方法有一个复杂类型的参数,可以使用Zeep的create_message方法来创建SOAP消息,并传递给相应的方法。例如:

from zeep import xsd

# 创建一个SOAP消息
message = client.create_message(client.service, 'getWeather', cityName='北京', cityCode='101010100')

# 调用方法,传递SOAP消息
result = client.service.getSupportCity(message)

# 打印返回结果
print(result)

在这个例子中,我们使用create_message方法创建了一个名为'getWeather'的SOAP消息,并传递了参数'北京'和'101010100'。然后将该SOAP消息传递给了Web服务的getSupportCity方法。

这些是使用Zeep调用SOAP协议的Web服务的一些基本方法和示例。根据具体的Web服务的定义,可能会有一些特定的使用方式和注意事项。你可以参考Zeep的官方文档来了解更多的细节和使用方法。