在Python suds SOAP客户端中忽略未知属性
我该如何设置Python的suds客户端,让它在SOAP响应中忽略那些在WSDL里没有的未知属性呢?
举个例子,如果输入的WSDL包含一个这样的对象:
<complexType name="VolCreateAttr">
<sequence>
<element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<element name="description" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<element name="size" type="xsd:unsignedLong" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
然后我调用SOAP接口getVolInfo,返回的是上面那种类型的对象。但是响应中除了WSDL里提到的三个属性外,还有一个额外的属性叫“reserve”。目前,suds会报一个找不到类型的错误。我该如何配置suds,让它忽略响应中的未知属性呢?
1 个回答
0
我觉得这里基本上有两个选择,一个是调整WSDL文件,让它和实际返回的值匹配,另一个是直接从输出中去掉多余的元素:
- 写一个 DocumentPlugin 来修改WSDL文件
- 写一个 MessagePlugin 来修改响应内容。
另外,你也可以使用其他的SOAP库,这些库可以从WSDL生成代码,然后手动调整这些代码。