Если вы создаете клиента для своих служб suds, вы можете увидеть некоторые атрибуты, чтобы определить, какие объекты необходимы для передачи в вызов службы.
Например:
import suds
client = suds.Client(url)
for a in client.sd: #print the whole service definition
print a
Это должно показать вам префиксы, порты с методами и типами.
Для вашего кода вы должны видеть, что нужно передать в вызове сервиса для createCase. Несмотря на то, что WSDL может определять метод как требующий «FWTCaseCreate», suds может выбирать определение для createCase, чтобы ему требовались ClassificationEventCode, Priority, Title type и т. Д.
Поэтому вы не захотите делать: (который передается в newCase для первого аргумента, помещая все детали под этим тегом)
newCase = client.factory.create('ns1:FWTCaseCreate')
caseID = client.service.createCase(newCase)
Но вместо этого вызывайте сервис следующим образом: (на основе определения сервиса)
newCase = client.factory.create('ns1:FWTCaseCreate')
caseID = client.service.createCase(newCase.ClassificationEventCode, newCase.Priority, ...)
Или, может быть:
newCase = client.factory.create('ns1:FWTCaseCreate')
caseID = client.service.createCase(*[getattr(newCase,a) for a in newCase.__keylist__])
Передача списка аргументов, необходимых для вызова службы.
Я не знаю, почему определение вызова службы неправильно разрешено как то, чем оно является, но передача правильного объекта не расширяется автоматически до нужного списка нужных аргументов. Возможно, чтение источника suds (http://jortel.fedorapeople.org/suds/doc/) поможет обнародовать ответ.