我正在使用一个 SOAP 服务,该服务具有用前导下划线定义的变量(假设是私有的,但文档中有必须使用它们的特定示例)。在 WSDL 中,它看起来像这样:
<xsd:element maxOccurs="1" minOccurs="0" name="__encoded_query" type="xsd:string"/>
通过一些实验,我已经确定,在我的 client.service 调用中使用命名参数,我可以正常分配变量,除了具有前导下划线的变量。
例如:
client.service.getRecords( name='server1' )
生成正确的 XML:
<ns1:getRecords>
<name>server1</name>
</ns1:getRecords>
但如果我尝试使用带下划线的参数:
client.service.getRecords( __encoded_query='name=server1' )
生成的 XML 根本不包含参数:
<ns1:getRecords/>
我不确定这是否是我不熟悉的语法细微差别(Python 或 suds),或者可能是 suds 试图通过基于私有变量约定保护变量来“聪明”。无论如何,这是使用此 Web 服务的记录方式,因此我需要弄清楚如何获得 suds 以生成包含__encoded_query
块的 XML。