2011-03-23 95 views
0

我试图通过SUDS0.4将一个python客户端连接到SOAP服务器。 通常情况下,提供一个复杂的论证到SOAP功能,我使用了Python字典: 例如,如果SOAP的说法是这样的:Python - Suds0.4 - 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> 
... 

所以我必须要通过两个复杂的参数具有完全相同的名称“parameterDesignatorValuePair”组成的复杂的论证“parameterDesignatorValuePairSet”:通过使用Python字典,我不能做:-(

我试图用列表和元组,但肥皂水返回我的错误...

感谢您的帮助

回答

1

您是否尝试过只是这样做:

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

client.service.FunctionName(param) 

命名空间可通过打印在W SUDS连接后的SDL文件。