python - Python zeep - XML 标记缺少字符串类型的类型声明
问题描述
使用zeep时,代码如下:
string_type = client.get_type("xsd:string")
string_expression = string_type("my string value")
结果如下:
<ns1:Value>my string value</ns1:Value>
SOAP 服务器上的序列化程序所期望的实际上是这样的:
<ns1:Value xsi:type="b:string" xmlns:b="http://www.w3.org/2001/XMLSchema">my string value</ns1:Value>
这种差异导致 SOAP 服务器抛出异常:
zeep.exceptions.Fault:格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://Services.IPWS/ 时出错。InnerException 消息是“来自命名空间 http://schemas.datacontract.org/的元素值 不能将子内容反序列化为对象。请使用 XmlNode[] 反序列化这种 XML 模式。'。有关更多详细信息,请参阅 InnerException。
可以做些什么来让 zeep 保留 XML 标记中的类型声明?
解决方案
我找到了一种让 zeep 生成以下标记的方法,这是 SOAP 服务器所期望的:
value = zeep.xsd.AnyObject(zeep.xsd.String(), "my string value")
这导致:
<ns1:Value xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">my string value</ns1:Value>
推荐阅读
- .net - Powershell function parameter type System.ConsoleColor - Missing ')' in function parameter list
- python - 用户有权限,但调用视图响应后是 403 Frobidden
- python - 具有 Ctypes 的独立 CDLL 库实例
- r - 订购周数作为移动时间段的因素
- r - match.arg(position) 中的错误:'arg' 必须为 NULL 或 Shiny 应用程序中的字符向量
- excel - 当单元格结果按公式更改时运行宏
- go - 如何创建用 golang sciter 库编写的程序的 snap YAML 文件?
- sql - 连接两个表并使用 sum 函数的最佳方法是什么
- iis - IIS - 将 http 请求从 url 重定向到同一文件夹中的另一个 url
- amazon-web-services - 是否可以使用默认 KMS 加密 Lambda 环境变量?