Веб-служба ожидает объект DataSet, как я могу предоставить это через ColdFusion или в необработанном XML? - PullRequest
5 голосов
/ 18 ноября 2009

Мне нужно позвонить в веб-сервис, написанный на .NET. Приложение, выполняющее вызов, написано в ColdFusion. Одним из параметров, ожидаемых веб-службой, является объект DataSet. Я не могу создать экземпляр объекта .NET DataSet в ColdFusion. Как я могу передать веб-службе то, что она примет? У меня нет проблем с написанием SOAP-запроса в необработанном XML, я просто не знаю, как будет выглядеть XML для объекта DataSet.

Ответы [ 2 ]

5 голосов
/ 18 ноября 2009

Все объекты, которые ожидает .NET, сериализуются Axis и доступны для вас. К сожалению, ColdFusion не позволяет легко добраться до.

Чтобы попасть в заглушки, необходимо:

  1. Доступ к WSDL любым способом с помощью Coldfusion.
  2. Найдите заглушки в каталоге приложений CF. Они в "подводных лодках" каталог, организованный WSDL.like: C: \ ColdFusion8 \ окурки \ WS \ WS-21028249 \ ком \ Foo \ бар \
  3. Скопируйте все из "com" вниз в новый каталог, который существует в путь класса CF. или вы можете сделать так: C: \ ColdFusion8 \ MyStubs \ ком \ Foo \ бар \
  4. Если вы создали новый каталог, добавьте его в путь к классам. и перезапустите сервисы CF.
  5. Используйте их как любой другой объект Java с или CreateObject () MyObj = CreateObject ("java", "com.foo.bar.MyObject");

Ваш объект набора данных должен быть где-то там в любом формате Java, который, как решил Ось, должен быть. Скорее всего, вам нужно будет сделать почти все это в cfscript


РЕДАКТИРОВАТЬ ВОПРОСЫ

Объект SOAP определит структуру объекта, а Axis создаст методы для управления ею. Посмотрите на Java-объект, который создает ось. Помните, что вы можете использовать CFDUMP для просмотра методов и свойств.

Теперь я видел объекты .NET, которые Axis запутался, например, страшная неуниверсальная коллекция, которая превращается в ArrayOfAnyType. Для разработчиков .NET важно использовать Generics в своих сервисах, чтобы Axis могла правильно определять массивы ... если они этого не делают, это отстой, и вы не сможете работать с ним в мыле.

но не бойся, оби-вон ... есть другой путь. Вы всегда можете взаимодействовать с веб-сервисами .NET в стиле XML / RPC. Он не автоматический, он много разбирает вручную на XML, отстой, но иногда это единственный способ сделать это. Вы должны быть в состоянии получить некоторую помощь от .NET, ударив файл .asmx без "? Wsdl" в конце. Если вы сделаете это, .NET сгенерирует кучу документации и примеров того, как выглядят вызовы и XML. В этом случае вы можете просто создать XML и передать его по проводам, как указано с помощью cfhttp. Удачи!

P.S. Следует также отметить, что, насколько мне известно, нет способа смешать свернутый вручную XML с объектами Axis ColdFusion / Apache, также нет способа смоделировать свой собственный объект для использования с CF / Axis ... вы должны использовать заглушки или ничего

0 голосов
/ 18 ноября 2009

Не могли бы вы использовать JSON?

http://json.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...