python - Python Zeep - 列表对象没有属性_xsd_name
问题描述
我正在尝试使用 Zeep 库调用 SOAP 端点。
端点具有以下签名:
ExecuteStaticSQLQuery(queryType: ns0:StaticQueries, xmlParameters: {_value_1: ANY}, iRowsAffected: xsd:int) -> ExecuteStaticSQLQueryResult: xsd:int, iRowsAffected: xsd:int
我构建了一个包含以下逻辑的函数:
INSERT_AUTO_FORWARD_IMPORT = 'INSERT_AUTO_FORWARD_IMPORT_1'
query_parameter = self.client.get_type('ns0:QueryParameter')
db_type = self.client.get_type('ns0:DbType')
table_parameter = query_parameter(ParameterType=db_type('String'),
ParameterName='@Auto_Forward_Table_Name',
ParameterValue=auto_forward_table)
any_object = AnyObject(query_parameter, table_parameter)
xml_parameters = {
'_value_1': any_object
}
soap_envelope = self.service.ExecuteStaticSQLQuery(queryType=INSERT_AUTO_FORWARD_IMPORT,
xmlParameters=xml_parameters,
iRowsAffected=rows_affected)
当我调用该函数时,出现以下错误:
'list' object has no attribute '_xsd_name'
我怀疑问题出在any_object
我构建的版本上,因为我可以在没有参数的情况下向端点发送请求,xmlParameters
并得到回复。
基于Zeep Any Objects Docs,我认为我正确地构建AnyObject
并实现了对 SOAP 端点的调用。
我真的不知道从这里去哪里。
解决方案
我不确定您是否正确创建了AnyObject
.
根据您链接到的 Zeep 文档,您应该调用get_element
而不是get_type
构造AnyObject
.
换句话说,尝试替换该行
query_parameter = self.client.get_type('ns0:QueryParameter')
和
query_parameter = self.client.get_element('ns0:QueryParameter')
推荐阅读
- ffmpeg - FFprobe 输出中的“has_b_frames”是什么意思?
- highcharts - Highmaps 钻取和不一致样式的工具提示?
- php - php发送的电子邮件标题中的特殊字符
- java - 配置 log4j2 为不同的包有不同的日志级别
- javascript - 我怎样才能在这里触发 popstate 事件?
- swift - 有人可以帮我阻止 arc4random 生成的数字再次出现吗?
- python - 您可以使用 Twitter API 查询的每个帐户的推文是否有时间限制?
- html - 如何使用引导 css 制作导航项?
- grafana - Grafana 中按天分组的 InfluxDB 数据移动了一天
- google-sheets - 根据输入在 Google 表格中创建动态列表