22.04.2017, 20:57 | #1 |
Участник
|
Вызов SOAP сервиса из DAX2009 без использования references - есть ли примеры в стандартном приложении
Всем доброго времени суток.
Вдруг возникла задача вызывать внешний WEB сервис из DAX2009. Есть WSDL файл, формат обмена совершенно понятен. Стандартно такие обращения делаются просто - бросаем в ветку references ссылку на wsdl и Аксапта нам генерит красивые прокси. Но есть две засады:
В общем, нужно вызывать сервис, работающий с SOAP и получить от него ответ. Соответственно, нужно как-то упаковать данные для запроса в строку и распаковать полученный ответ из строки. Понятно, что SOAP это, в общем-то, обычный XML и, приложив силы, вполне можно для конкретного случая самому нарисовать код. Вопрос простой: есть ли в стандартном приложении DAX2009 примеры того, как вызывать SOAP запрос? У меня было стойкое убеждение, что это должно быть где-то в районе AIF*, но как-то не получилось найти. PS: работа с запросами http, более того, с WEB сервисами JSON (при помощи dot.net класса System.Web.Script.Serialization.JavaScriptSerializer) уже отработана, хочется либо использовать то, что есть в стандартном приложении, либо думать о том, как нарисовать фрейморк для SOAP. |
|
22.04.2017, 21:08 | #2 |
Участник
|
В дополнение. Возможно, что что-то подобное есть в DAX2012. К ней есть доступ, подписка действующая, поэтому можно выдернуть что-то оттуда (работа json была подсмотрена именно в DAX012).
|
|
23.04.2017, 06:59 | #3 |
Участник
|
А почему просто не сгенерить прокси через wsdl.exe скомпилить его в библиотеку и добавить как референс ? Стандартный визард в 9 вроде так и делает, генерит прокси класс и обертку которая его вызывает через маршалинг (зачем-то) потом компилит и добавляет ссылку в АОТ.
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (5), trud (3). |
23.04.2017, 07:21 | #4 |
Боец
|
Мы делали просто - Делали рефернс на сервис в VS, а получившуюся dll-обертку цепляли как refernce в АХ. Это решало 2 задачи: авторизацию и корректную обработку ошибок, возникающий при работе с сервисом (аксапта их не ловит try/catch)
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (5). |
23.04.2017, 12:33 | #5 |
Участник
|
Спасибо, при помощи VS срабатывает.
Но вопрос остался, хотя уже больше теоретический. Если вдруг нет возможности добавлять референс (не знаю почему, но вот так вдруг), то есть ли в стандартном приложении примеры сериализации/десериализации в XML по данным wsdl файла? Просто по xsd схеме примеры есть, а хотелось бы посмотреть как обрабатываются всякие Policy, message, binding и т.п.. |
|
23.04.2017, 14:45 | #6 |
Участник
|
Ой.
Явно нужно отменять выходные дни - очень расслабляют. В ответах skuull и DSPIC есть намек на то, что требуется. Добавление ссылки на wsdl файл вызывает метод createServiceReference класса SysReference. Ну а дальше уже простое копание в коде. |
|