2014-01-13 130 views
0

如何獲取肥皂信封,以及如何在發送到服務器之前更改這些值。如何獲得帶肥皂泡的肥皂信封python

例如:SOAP信封

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
xmlns:ws="http://www.altoromutual.com/bank/ws/"> 
<soap:Header/> 
<soap:Body> 
    <ws:TransferBalance> 
    <!--Optional:--> 
    <ws:transDetails> 
     <ws:transferDate>2013-01-01T00:00:00</ws:transferDate> 
     <!--Optional:--> 
     <ws:debitAccount>1001160141</ws:debitAccount> 
     <!--Optional:--> 
     <ws:creditAccount>1001160140</ws:creditAccount> 
     <ws:transferAmount>2.0</ws:transferAmount> 
    </ws:transDetails> 
    </ws:TransferBalance> 

我想持這種信封,發送到server.How之前更改數值我可以用肥皂水做

感謝

+0

您可以使用[醫](https://fedorahosted.org/suds/wiki/Documentation#Doctors)班取決於你想如何改變它。或者你可以下載和修改你正在使用的wsdl。 – jordanm

回答

1

如果我正確理解了這個問題,您不一定需要使用泡沫來修改信封。相反,您可以將請求保存爲模板,使用您最喜歡的模板引擎更改需要更改的任何值,並使用參數__inject將整個請求傳遞給泡沫呼叫。

這裏有一個簡單的例子:

import suds 
from mako.template import Template 

WSDL = 'https://example.com/someservice?wsdl' 

client = suds.client.Client(WSDL) 
template = Template(filename='template.xml') 
request = template.render(debitaccount='someaccount', creditaccount='anotheraccount') 
response = client.service.some_call(__inject={'msg':request}) 

而且模板

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
xmlns:ws="http://www.altoromutual.com/bank/ws/"> 
<soap:Header/> 
<soap:Body> 
    <ws:TransferBalance> 
    <!--Optional:--> 
    <ws:transDetails> 
     <ws:transferDate>2013-01-01T00:00:00</ws:transferDate> 
     <!--Optional:--> 
     <ws:debitAccount>${debitaccount}</ws:debitAccount> 
     <!--Optional:--> 
     <ws:creditAccount>${creditaccount}</ws:creditAccount> 
     <ws:transferAmount>2.0</ws:transferAmount> 
    </ws:transDetails> 
    </ws:TransferBalance> 
</soap:Body> 
</soap:Envelope> 
+0

請建議一些模板引擎。我是新的webservices和suds.If你有一些示例代碼,可以幫助 – user3157084

+0

我使用[mako](http://www.makotemplates.org/)。 – skoll

+0

增加了一些示例代碼。 – skoll