Python中如何使用SOAP协议进行Web服务调用?
我用 python 完成了 login 之后,return 给我一个 sessionid ,那么我该如何使用这个 sessionid 来加载到后面的功能模块中呢?是放到 soapmessage 中还是放 header 里。 我这个没有 wsdl,就是通过 soapmessage 进行通信。
感谢大神解惑
Python中如何使用SOAP协议进行Web服务调用?
1 回复
import zeep
def call_soap_service():
# WSDL地址
wsdl_url = 'http://www.example.com/your-service?wsdl'
try:
# 创建客户端
client = zeep.Client(wsdl=wsdl_url)
# 查看可用的服务和操作
print("可用服务:", client.wsdl.services)
print("可用操作:", [op.name for op in client.wsdl.operations])
# 调用SOAP方法
# 假设有一个名为'GetData'的操作
result = client.service.GetData(
param1='value1',
param2='value2'
)
# 处理返回结果
print("响应结果:", result)
return result
except Exception as e:
print(f"调用SOAP服务失败: {e}")
return None
# 使用示例
if __name__ == "__main__":
call_soap_service()
用zeep库就行,装一下:pip install zeep。这库能自动解析WSDL,生成对应的方法调用。记得把wsdl_url换成你的实际地址,方法名和参数也按实际改。如果服务需要认证,可以这样加:
from zeep import Client
from zeep.transports import Transport
from requests import Session
from requests.auth import HTTPBasicAuth
session = Session()
session.auth = HTTPBasicAuth('username', 'password')
transport = Transport(session=session)
client = Client(wsdl_url, transport=transport)
用suds-jurko也行,但zeep维护得更好些。

