如何基于WSDL使用zeep工具创建元素?
Zeep构造全局元素作为服务参数的解决方法
你遇到的问题核心是混淆了Zeep中的类型(Type)和全局元素(Global Element):你看到的ns1:Request是全局元素,不是可通过get_type获取的类型,所以调用get_type会报错。
解决步骤如下:
1. 使用get_element获取全局元素构造器
Zeep提供了get_element方法专门用于获取全局元素,替代get_type:
request_element = client.get_element("ns1:Request")
2. 构造元素实例
通过获取到的构造器,传入符合WSDL结构的参数创建实例:
request = request_element( FooBar={ "Parms": { "CorrelationID": "your-correlation-id", # 补充WSDL中要求的其他参数 } } )
3. 直接传入字典(简化方式)
如果参数结构不复杂,也可以直接传入符合要求的字典,Zeep会自动将其转换为对应的元素类型:
request = { "FooBar": { "Parms": { "CorrelationID": "your-correlation-id" } } }
4. 查看完整WSDL结构(可选)
如果不确定参数细节,可以执行以下命令导出完整的WSDL信息,方便核对:
client.wsdl.dump()
最后将构造好的request直接作为参数传入服务操作即可。
内容的提问来源于stack exchange,提问作者aggsol
相关产品推荐
相关产品推荐

