Python - Suds0.4 - SOAP正文复杂参数

时间:2011-03-23 17:26:08

标签: python soap wsdl suds

我尝试通过SUDS0.4将python客户端连接到SOAP服务器。 通常,为了向SOAP函数提供复杂的参数,我使用python字典: 例如,如果SOAP参数如下所示:

<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>

我的python代码如下:

result = client.service.myfunction(parameterDesignatorValuePair={'parameterDesignator':val1,'parameterValue':val2})

现在我尝试连接到我没有编程的SOAP服务器,但我知道我的请求的SOAP主体如何从现有的Java客户端看起来像:(感兴趣的部分)

...
<parameterDesignatorValuePairSet>
<parameterDesignatorValuePair>
<parameterDesignator>Message</parameterDesignator>
<parameterValue>AAAABgBDAG8AdQBjAG8AdQ==</parameterValue>
</parameterDesignatorValuePair>
<parameterDesignatorValuePair>
<parameterDesignator>Sender</parameterDesignator>
<parameterValue>AAAABwBSAGUAbgBhAHUAbABk</parameterValue>
</parameterDesignatorValuePair>
</parameterDesignatorValuePairSet>
...

所以我必须传递复杂的参数“parameterDesignatorValuePairSet”,它由两个具有完全相同名称“parameterDesignatorValuePair”的复杂参数组成:我不能通过使用python字典来做到这一点: - (

我尝试使用list和tuple但是SUDS返回错误...

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您是否尝试过这样做:

param = client.factory.create('ns1:parameterDesignatorValuePairNamespace')
param.parameterDesignator = val1
param.parameterValue = val2

client.service.FunctionName(param)

通过在SUDS连接后打印WSDL文件,可以使用命名空间。