2014-02-15 96 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