2016-12-27 61 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。它有更多的功能和更好的文件。