如何解决zeep 中的类型错误当响应中返回两个选择元素时
我正在尝试在 python 中调用“Get_Purchase_Orders”操作,当收到响应时它抛出以下错误
TypeError error in Get_Purchase_Orders : {urn:com.workday/bsvc}Bill_To_Address_ReferenceType() got an unexpected keyword argument 'Address_Reference'. Signature: `({Bill_To_Address_Reference: {urn:com.workday/bsvc}Unique_IdentifierObjectType} | {Address_Reference: {urn:com.workday/bsvc}Address_ReferenceType[]}) Unexpected error: <class 'TypeError'>
我的发现:
Bill_To_Address_Data
有两个相互排斥的元素(Bill_To_Address_Reference
和 Address_Reference
),这意味着只需要两个元素中的一个(Bill_To_Address_Reference
{{ 1}} 和两个标签都来响应)。可以看到示例 XML here。
xml chunk 也可以在下面看到
Address_Reference
下面是上面xml的xsd块
<bsvc:Bill_To_Address_Data>
<!-- You have a CHOICE of the next 2 items at this level -->
<!-- Optional: -->
<bsvc:Bill_To_Address_Reference bsvc:Descriptor="string">
<!-- Zero or more repetitions: -->
<bsvc:ID bsvc:type="string">string</bsvc:ID>
</bsvc:Bill_To_Address_Reference>
<!-- Zero or more repetitions: -->
<bsvc:Address_Reference>
<!-- Optional: -->
<bsvc:ID>string</bsvc:ID>
</bsvc:Address_Reference>
</bsvc:Bill_To_Address_Data>
在针对 WSDL 中的 XSD 验证 XML 或可以访问时,我在氧气中确认了这一点here
现在我想要的是忽略这个错误并使用 zeep 解析 python 中的响应。 任何帮助将不胜感激。
解决方法
您的选择是:
- 修改 WSDL(XML 架构部分),以便在同一请求中允许两个标签
- 在 Zeep 中找到允许您关闭 XSD 验证的设置
- 停止使用 Zeep,寻找另一个工具,让您无需验证 WSDL 即可解析请求
选项 1 是最好的,因为 WSDL 应该是服务与其调用者之间的契约。如果不验证,那么使用 WSDL 的价值就会大大降低。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。