Что вызывает эту ошибку SoapMapper в вызове VBA Soap Service? - PullRequest
1 голос
/ 02 марта 2011

Я пытаюсь использовать веб-службу SOAP на основе Java из кода VBA в книге Excel 2003.Доступны два метода.Один получает данные, другой загружает данные.Сервис для извлечения данных работает нормально.Однако, когда мы пытаемся загрузить данные, мы сталкиваемся со странной ошибкой, о которой я просто не могу найти хорошую информацию в Google.Сообщение об ошибке:

Run-time error '-2147221504 (800040000)';
SoapMapper: Putting data into SoapMapper element failed

Если мы пытаемся использовать один и тот же веб-сервис из приложения .NET, создается впечатление, что сгенерированные классы и методы немного отличаются.Например, вызов службы извлечения данных принимает объект DataContainer, который имеет некоторые идентифицирующие свойства, чтобы определить, какие данные получить.Затем он возвращает объект того же типа с заполненными данными.

В классах VBA, созданных с помощью Web Reference Toolkit, оба извлекают и сохраняют объект одного и того же типа.Но в .NET для сохранения требуется объект SaveDataContainerDetails.

Итак, пара вопросов на самом деле:

  • Кто-нибудь видел ошибку SoapMapper раньше в своем VBA?работа?

  • Кто-нибудь видел, чтобы .NET и VBA генерировали разные сигнатуры методов из одного и того же WSDL?Что может вызвать это и как я могу обойти это?

  • Есть ли лучший способ вызывать сервисы SOAP из VBA вместо использования Web Reference Toolkit и SOAP Toolkit?

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Я понял проблему здесь. VBA Soap Toolkit и Web References Toolkit просто не могут обрабатывать массивы сложных типов. Приведенное выше сообщение об ошибке несколько вводило в заблуждение, потому что «элемент» был фактически именем элемента XML в конверте Soap. Так что не удалось поместить данные в элемент, называемый «элемент». Это немного маскировало проблему.

Итак, я определил, что все это сводится к массивам сложных типов. Я также определил, что НАМНОГО легче просто изготовить мыльные конверты в VBA. Требуемый XML обычно довольно хорошо структурирован и не слишком сложен для создания и / или анализа. Так что, если у вас возникли проблемы с Soap Toolkit или Web References Toolkit в VBA ... просто не используйте его! :)

0 голосов
/ 03 марта 2011

Лучший способ использовать веб-сервисы из VBA, VBSCRIPT, Classic ASP и т. Д. - это создать свой клиент с помощью .NET.Затем превратите ваш клиент в объект COM.Они легко потребляются этими старыми технологиями.

...