Python suds中的自定义参数属性

2024-09-30 22:11:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在suds上遇到问题。在

我试图建立一个通用系统来调用一个API,一些参数被定义为具有多个属性的类。最初所有这些属性都是空的,我试图通过一个字典来自动填充一些属性

例如:

from suds.client import Client

client = Client("...")
method = "getCampaignsByCriteria"
arg_repr = {"ids": [123]}
arg = client.factory.create("CampaignSearchCriteria")
for k, v in arg_repr.iteritems():
    setattr(arg, k, v)
service = client.service
args_map = {"searchCriteria": arg}
getattr(service, method)(**args_map)

生成以下内容,其中CampaignSearchCriteria中的所有默认字段仍然存在,并且ids设置正确:

^{pr2}$

但是,由于我只设置ids字段,我希望SOAP主体只考虑非空字段,如下所示:

<SOAP-ENV:Body>
  <ns1:getCampaignsByCriteria>
     <searchCriteria xsi:type="ns1:CampaignSearchCriteria">
        <ids xsi:type="ns1:ArrayOf_xsd_long">123</ids>
     </searchCriteria>
  </ns1:getCampaignsByCriteria>
</SOAP-ENV:Body>

当您在方法中使用自定义参数时,我无法找到如何选择要包含的字段。有什么想法吗?在


Tags: clientids参数属性serviceargmethodsoap
1条回答
网友
1楼 · 发布于 2024-09-30 22:11:28

SOAP请求的外观取决于WSDL,特别是为消息指定模式的数据类型定义。
因此,不能只省略一些字段,否则如果模式不允许,消息就不再是有效的请求。在

如果我是正确的,那么this应该是我们正在讨论的wsdl,因为所有属性minOccurs都不存在,这意味着它默认为1,并且您不能省略元素,尽管它们是可空的。在

我的一般建议是:不要过多地考虑SOAP请求的外观。SOAP是xml,因此具有人类可读性,但它并不是真正为人类所理解而设计的。在

相关问题 更多 >