使用suds-py3库在Python中调用SOAP WSDL无输出问题排查
问题描述
使用Python的suds-py3库调用SOAP服务时,指定WSDL关联的xsd地址执行代码后无任何输出,无法排查问题。相关服务信息:
- WSDL地址:
https://appweb.dane.gov.co/sipsaWS/SrvSipsaUpraBeanService?WSDL - 关联xsd地址:
https://appweb.dane.gov.co/sipsaWS/SrvSipsaUpraBeanService?xsd=1
测试代码如下:
from suds.client import Client url = "https://appweb.dane.gov.co/sipsaWS/SrvSipsaUpraBeanService?xsd=1" results = Client(url) print(results)
解决方案
改用zeep库替代suds-py3,zeep对SOAP服务的兼容性更好,能更稳定地解析WSDL及关联xsd。实现示例代码:
import zeep # 初始化zeep客户端,传入完整WSDL地址(无需单独指定xsd) client = zeep.Client(wsdl="https://appweb.dane.gov.co/sipsaWS/SrvSipsaUpraBeanService?WSDL") # 打印客户端对象,验证服务连接与解析结果 print(client) # 调用具体服务方法(需根据实际接口定义调整参数和方法名) # 示例:假设服务提供名为consultarDatos的方法 # result = client.service.consultarDatos(参数名=参数值) # print(result)
关键说明
- 不要直接传入xsd地址给客户端,zeep会通过WSDL自动关联解析对应的xsd文件
- 若调用服务时需要构造复杂参数,可参考服务的WSDL定义,结合zeep的
zeep.xsd.Element工具生成符合要求的参数结构
内容的提问来源于stack exchange,提问作者oscar gonzalez
相关产品推荐
相关产品推荐

