Skip to main content
 首页 » 编程设计

python之Python suds 中带前导下划线的参数

2025年05月04日9JustinYoung

我正在使用一个 SOAP 服务,该服务有一个用前导下划线定义的变量(假设是私有(private)的,但文档中有必须使用它们的特定示例)。在 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 试图通过基于私有(private)变量约定保护变量来“聪明”。无论如何,这是使用此 Web 服务的记录方式,因此我需要弄清楚如何让肥皂水生成包含 __encoded_query block 的 XML。

请您参考如下方法:

这不是你的错,这是一个 documented suds issue .