Измените определение клиента WSDL Delphi для поддержки различных версий WDSL

Я пытаюсь упростить и упростить реализацию новых версий стороннего WebService.

Для этого я изменил все классы, сгенерированные WSDL, на интерфейсы с теми же методами и свойствами.

Изменен интерфейс сервиса на Generic.

И сделал AbstractFactory для создания реальных продуктов в зависимости от каждой версии.

Когда все это было сделано, после устранения других мелких ошибок я провел тесты, которые получил:

Исключение при первом шансе - 75E5C42D. Класс исключения ERemotableException с сообщением «Не удается найти метод отправки для {} consultarAlteracao». Процесс intWSServidor.exe (7364)

Был класс consultarAlteracao и он становится IconsultarAlteracao.

Я пытался изменить InvRegistry и все другие методы для использования интерфейса и абстрактных классов, но безуспешно.


person Caputo    schedule 11.08.2014    source источник
comment
Обычно это означает, что инфраструктура SOAP не может найти вызываемую вами операцию. Просмотрите эту ссылку, чтобы получить несколько советов по ее решению.   -  person Guillem Vicens    schedule 12.08.2014
comment
@GuillemVicens Я пробовал это. Он работал до того, как я изменил наследование, чтобы использовать интерфейсы и фабричные методы.   -  person Caputo    schedule 12.08.2014
comment
AFAIK, это {} означает, что он ищет операцию с empty namespace. Может быть, у WSDL есть указанное пространство имен, которое вы не рассматриваете?   -  person Guillem Vicens    schedule 12.08.2014


Ответы (1)


Это заканчивается тем, что Delphi не поддерживает интерфейсные элементы как свойства для объектов TRemotable.

После изменения всех свойств на абстрактные классы, которые реализуют базовый интерфейс, все работает нормально

person Caputo    schedule 29.11.2016