Настройка
Я пытаюсь проверить, есть ли определенные (клиентские) отношения в моей системе учета через ее мыльный клиент WSDL.
Попробуйте
Следуя документации , я успешно подключился к своей учетной записи,
from suds.client import Client
url = 'https://soap.e-boekhouden.nl/soap.asmx?wsdl'
c = Client(url)
user = 'me'
sec1 = 'security_code_1'
sec2 = 'security_code_2'
osResult = c.service.OpenSession(user,sec1,sec2)
Затем я проверяю функцию, чтобы получить все отношения в системе, то есть print(GetRelaties)
, которая дает
(GetRelaties){
SessionID = None
SecurityCode2 = None
cFilter =
(cRelatieFilter){
Trefwoord = None
Code = None
ID = None
}
}
Если я хочу проверить, находится ли отношение 'Vervoort'
в системе, мне нужно использовать GetRelaties
функция, т.е.
GetRelaties = c.factory.create('GetRelaties')
GetRelaties.SessionID = osResult.SessionID
GetRelaties.SecurityCode2 = sec2
cRelatieFilter = c.factory.create('cRelatieFilter')
cRelatieFilter.Trefwoord = 'Vervoort'
GetRelaties.cFilter = cRelatieFilter
такая, что
print(GetRelaties)
(GetRelaties){
SessionID = "{FDC2C855-E2E2-49F2-A62E-0373E8279821}"
SecurityCode2 = "C218B421-885C-4B7F-8313-C1B0F77B8F88"
cFilter =
(cRelatieFilter){
Trefwoord = "Vervoort"
Code = None
ID = None
}
}
Обратите внимание, что для звонка мне нужно предоставить SessionID
и SecurityCode2
.
Ошибка
Сделав все это, я выполняю c.service.GetRelaties(GetRelaties)
, что дает
Traceback (most recent call last):
File "<ipython-input-118-1f7334c4e16b>", line 1, in <module>
c.service.GetRelaties(GetRelaties)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/client.py", line 558, in __call__
return client.invoke(args, kwargs)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/client.py", line 611, in invoke
soapenv = binding.get_message(self.method, args, kwargs)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/bindings/binding.py", line 120, in get_message
content = self.bodycontent(method, args, kwargs)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/bindings/document.py", line 64, in bodycontent
p = self.mkparam(method, pd, value)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/bindings/document.py", line 106, in mkparam
return Binding.mkparam(self, method, pdef, object)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/bindings/binding.py", line 289, in mkparam
return marshaller.process(content)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/core.py", line 60, in process
self.append(document, content)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/core.py", line 73, in append
self.appender.append(parent, content)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/appender.py", line 102, in append
appender.append(parent, content)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/appender.py", line 243, in append
Appender.append(self, child, cont)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/appender.py", line 182, in append
self.marshaller.append(parent, content)
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/core.py", line 72, in append
if self.start(content):
File "/opt/anaconda3/lib/python3.7/site-packages/suds/mx/literal.py", line 87, in start
raise TypeNotFound(content.tag)
TypeNotFound: Type not found: 'SessionID'
Что я здесь не так делаю