Использование конечной точки SOAP с помощью Zeep/WSDL ⇐ Python
Использование конечной точки SOAP с помощью Zeep/WSDL
Я пишу быстрый инструмент для отправки заданий через SOAP API.
Раньше я делал это с Zeep, но, похоже, возникли проблемы с одной конечной точкой, которая использует xsd в WSDL.
Вот что у меня есть на данный момент (исключая базовый импорт из Zeep):
client = Client("wsdl/create_works_orders_definition.wsdl") с client.settings(strict=False, xml_huge_tree=True, xsd_ignore_sequence_order=True): запрос = zeep.xsd.Element('SX3_XML_DOCUMENT', zeep.xsd.ComplexType([ zeep.xsd.Sequence([ zeep.xsd.Element('SX3_HEADER', zeep.xsd.ComplexType([ zeep.xsd.Element('API',zeep.xsd.String()), zeep.xsd.Element('ЗАПРОС',zeep.xsd.String()), zeep.xsd.Element('REQUEST_USER',zeep.xsd.String()), zeep.xsd.Element('REQUEST_PASSWORD',zeep.xsd.String()), ]) ), zeep.xsd.Элемент( 'SX3_BODY', zeep.xsd.ComplexType([ zeep.xsd.Element('CreateWorksOrders', zeep.xsd.ComplexType([ zeep.xsd.Element('ExternalReference',zeep.xsd.String()), zeep.xsd.Element('PropertyReference',zeep.xsd.String()), zeep.xsd.Element('WorkProgramme',zeep.xsd.String()), zeep.xsd.Element('ContractorSite',zeep.xsd.String()), zeep.xsd.Element('RaisingDateTime',zeep.xsd.String()), zeep.xsd.Element('PriorityCode',zeep.xsd.String()), zeep.xsd.Element('TargetDatetime',zeep.xsd.String()), zeep.xsd.Element('LocationNotes',zeep.xsd.String()), zeep.xsd.Element('AccessNotes',zeep.xsd.String()), zeep.xsd.Element('AccessAm',zeep.xsd.String()), zeep.xsd.Element('AccessPm',zeep.xsd.String()), zeep.xsd.Element('WoDescription',zeep.xsd.String()), ]) ), ]) ), ]) ]) ) request_body = request(SX3_HEADER={'API':'','REQUESTOR':'','REQUEST_USER':'','REQUEST_PASSWORD':''}, SX3_BODY={'ExternalReference': '', 'PropertyReference':'', 'Рабочая программа':'', 'Сайт подрядчика':'', 'RaisingDateTime': '', 'Код Приоритета':'', 'TargetDatetime': '', 'Примечания о местоположении':'', 'AccessNotes':'', 'AccessAm':'', 'AccessPm':'', 'WoDescription':''}) create = client.service.CreateWorksOrders( тело_запроса, ) При попытке проверить я получаю следующую ошибку:
ComplexType() получил неожиданный аргумент ключевого слова «ContractorSite». Подпись: `CreateWorksOrders: {ExternalReference: xsd:string, PropertyReference: xsd:string, WorkProgramme: xsd:string, ContractorSite: xsd:string, RaishedDateTime: xsd:string, PriorityCode: xsd:string, TargetDatetime: xsd:string, LocationNotes: xsd:string, AccessNotes: xsd:string, AccessAm: xsd:string, AccessPm: xsd:string, WoDescription: xsd:string}` Wsdl находится здесь: https://drive.google.com/file/d/1NIfMqi ... sp=sharing
Это длинно, поэтому я не хотел копировать и вставлять все это.
Может кто-нибудь указать мне правильное направление?
Заранее спасибо
Я пишу быстрый инструмент для отправки заданий через SOAP API.
Раньше я делал это с Zeep, но, похоже, возникли проблемы с одной конечной точкой, которая использует xsd в WSDL.
Вот что у меня есть на данный момент (исключая базовый импорт из Zeep):
client = Client("wsdl/create_works_orders_definition.wsdl") с client.settings(strict=False, xml_huge_tree=True, xsd_ignore_sequence_order=True): запрос = zeep.xsd.Element('SX3_XML_DOCUMENT', zeep.xsd.ComplexType([ zeep.xsd.Sequence([ zeep.xsd.Element('SX3_HEADER', zeep.xsd.ComplexType([ zeep.xsd.Element('API',zeep.xsd.String()), zeep.xsd.Element('ЗАПРОС',zeep.xsd.String()), zeep.xsd.Element('REQUEST_USER',zeep.xsd.String()), zeep.xsd.Element('REQUEST_PASSWORD',zeep.xsd.String()), ]) ), zeep.xsd.Элемент( 'SX3_BODY', zeep.xsd.ComplexType([ zeep.xsd.Element('CreateWorksOrders', zeep.xsd.ComplexType([ zeep.xsd.Element('ExternalReference',zeep.xsd.String()), zeep.xsd.Element('PropertyReference',zeep.xsd.String()), zeep.xsd.Element('WorkProgramme',zeep.xsd.String()), zeep.xsd.Element('ContractorSite',zeep.xsd.String()), zeep.xsd.Element('RaisingDateTime',zeep.xsd.String()), zeep.xsd.Element('PriorityCode',zeep.xsd.String()), zeep.xsd.Element('TargetDatetime',zeep.xsd.String()), zeep.xsd.Element('LocationNotes',zeep.xsd.String()), zeep.xsd.Element('AccessNotes',zeep.xsd.String()), zeep.xsd.Element('AccessAm',zeep.xsd.String()), zeep.xsd.Element('AccessPm',zeep.xsd.String()), zeep.xsd.Element('WoDescription',zeep.xsd.String()), ]) ), ]) ), ]) ]) ) request_body = request(SX3_HEADER={'API':'','REQUESTOR':'','REQUEST_USER':'','REQUEST_PASSWORD':''}, SX3_BODY={'ExternalReference': '', 'PropertyReference':'', 'Рабочая программа':'', 'Сайт подрядчика':'', 'RaisingDateTime': '', 'Код Приоритета':'', 'TargetDatetime': '', 'Примечания о местоположении':'', 'AccessNotes':'', 'AccessAm':'', 'AccessPm':'', 'WoDescription':''}) create = client.service.CreateWorksOrders( тело_запроса, ) При попытке проверить я получаю следующую ошибку:
ComplexType() получил неожиданный аргумент ключевого слова «ContractorSite». Подпись: `CreateWorksOrders: {ExternalReference: xsd:string, PropertyReference: xsd:string, WorkProgramme: xsd:string, ContractorSite: xsd:string, RaishedDateTime: xsd:string, PriorityCode: xsd:string, TargetDatetime: xsd:string, LocationNotes: xsd:string, AccessNotes: xsd:string, AccessAm: xsd:string, AccessPm: xsd:string, WoDescription: xsd:string}` Wsdl находится здесь: https://drive.google.com/file/d/1NIfMqi ... sp=sharing
Это длинно, поэтому я не хотел копировать и вставлять все это.
Может кто-нибудь указать мне правильное направление?
Заранее спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение