我正在使用一个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。