2011-03-23 96 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文件。