Если вы посмотрите документацию zeep
, вы увидите, что это очень упрощает вызов сервисных методов soap.
1-й из всех, что вам нужно проверить wsdl: python -mzeep https://ws.conf.ebs.health.gov.on.ca:1443/EDTService/EDTService?wsdl
тогда вы можете увидеть определение getTypelist
там (с учетом первой привязки):
getTypeList(_soapheaders={ebsrequest_header: ns0:ebs_header, msarequest_header:
ns3:msa_header, idprequest_header: ns2:idp_header}) -> return: ns1:typeListResult
, поэтому вам нужно создать ebs_header, msa_header & idp_header
. создайте фабрику для каждого:
factory0 = client.type_factory('ns0')
factory2 = client.type_factory('ns2')
factory3 = client.type_factory('ns3')
, затем создайте каждый из этих элементов:
ebs_header = factory0.ebs_header(SoftwareConformanceKey="key", AuditId="id")
print(ebs_header)
msa_header = factory3.msa_header(ServiceUserMUID="muid", UserID="uid")
print(msa_header)
idp_header = factory2.idp_header(ServiceUserMUID="muid")
print(idp_header)
# then create the _soapheaders
headers = {
'ebsrequest_header' : ebs_header,
'msarequest_header' : msa_header,
'idprequest_header' : idp_header
}
#finally call the method
response = client.service.getTypeList(_soapheaders=headers)
# you can see the sent request from plugin:
print(history.last_sent)
обратите внимание, что я пытался запустить код, но я получаю ошибку соединения.
Надеюсь, это поможет.