2014-01-13 102 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