2014-02-15 94 views
9

我想通過使用WSDL的SUDS發送我的手版本xml。我發現,我能做到這樣的:通過SUDS發送xml

xml = Raw(""" 
<SOAP-ENV:Envelope xmlns:ns0="urn:ca:std:cdc:tech:xsd:cdc.001.01" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <ns1:Body> 
     <ns0:GetAccountBalance> 
     <ns0:Document> 
      <myData> 
       something 
      </myData> 
</ns0:Document> 
     </ns0:GetAccountBalance> 
    </ns1:Body> 
</SOAP-ENV:Envelope> 
    """) 

print client.service.GetAccountBalance(xml) 

但使用這種方法使用儀器發送:

<SOAP-ENV:Envelope xmlns:ns0="urn:ca:std:cdc:tech:xsd:cdc.001.01" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <ns1:Body> 
     <ns0:GetAccountBalance> 
     <ns0:Document> 
      <SOAP-ENV:Envelope xmlns:ns0="urn:ca:std:cdc:tech:xsd:cdc.001.01" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <ns1:Body> 
     <ns0:GetAccountBalance> 
     <ns0:Document> 
      <myData> 
       something 
      </myData> 
</ns0:Document> 
     </ns0:GetAccountBalance> 
    </ns1:Body> 
</SOAP-ENV:Envelope> 
</ns0:Document> 
     </ns0:GetAccountBalance> 
    </ns1:Body> 
</SOAP-ENV:Envelope> 

我的問題是,我怎麼能送我的XML,而不會被肥皂水加什麼?

回答

13

根據皁液文檔,可以使用__inject參數你調用的方法來發送原始SOAP消息:

client.service.GetAccountBalance(__inject={'msg': xml}) 
+1

我想你想說的是,我們需要替換.GetAccoutBalance()與我們試圖調用的任何方法。 我對文檔中「test」這個詞的用法感到困惑。使用手工製作的XML字符串來調用您要調用的方法會更清楚。 – Will