2016-12-27 64 views
0

我有這樣的方案:如何使用pysimplesoap將標題添加到SOAP?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="tns" xmlns:nam="https://iotchet.ru/namespases"> 
    <soapenv:Header> 
     <tns:RequestHeader> 
     <!--Optional:--> 
     <tns:sessionkey>b01daba7289e4e8baa87dbd1eb8c4f6b</tns:sessionkey> 
     </tns:RequestHeader> 
    </soapenv:Header> 
    <soapenv:Body> 
     <tns:SendContainer> 
     <!--Optional:--> 
     <tns:Container> 
      <nam:name>test</nam:name> 
      <nam:content></nam:content> 
     </tns:Container> 
     </tns:SendContainer> 
    </soapenv:Body> 
</soapenv:Envelope> 

在這裏,我也求:

from pysimplesoap.client import SoapClient 

client = SoapClient(wsdl='http://localhost:5555/api/containerize?wsdl') 
client.SendContainer(Container={'name': 'test', 'content': 'test'}) 

我找不到的頭添加到我的客戶端請求的方式。

回答

1

例如,假設您想在標題中添加Credential,如下所示。

<soapenv:Header> 
    <Credential> 
    <user>hoge</user> 
    <password>hoge</password> 
    </Credential> 
</soapenv:Header> 

然後你可以使用下面的代碼。

client = SoapClient(wsdl=WSDL_FILE) 
client['Credential'] = { 'user': 'hoge', 'password': 'hoge' } 

這種規則很難找到,因爲pysimplesoap被遺棄,其文檔丟失。

我在GitHub的issues_test.py中發現了這個。由於該程序正在測試從真實案例中獲取的功能,因此它有一些有用的示例。

如果您願意切換,我建議Zeep。它有更多的功能和更好的文件。