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维护得更好些。

回到顶部