Вызов Web-сервиса с помощью динамической ссылки
Вызов веб-сервиса выполнением POST-запроса
Механизм Web-сервисов позволяет использовать систему, написанную на платформе 1С, как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать ее с другими информационными системами с использованием сервис-ориентированной архитектуры (SOA).
Платформа 1С позволяет разработчику вызывать Web-сервисы, предоставляемые другими поставщиками, двумя способами:
При использовании динамической ссылки, описание Web-сервиса получается каждый раз при вызове Web-сервиса. Скорость работы при этом уменьшается, но зато такой подход обеспечивает актуальность описания Web-сервиса поставщика, то есть используется последняя версия WSDL-документа. В случае же использования статических ссылок для получения актуального описания Web-сервиса требуется выполнить повторный импорт WSDL-документа средствами конфигуратора и затем сохранить измененную конфигурацию.
*WSDL-документ - язык описания веб-сервисов и доступа к ним, основанный на языке XML.
Рассмотрим пример вызова Web-сервиса с помощью динамической ссылки на примере сервиса проверки правописания Яндекс.Спеллер. Для доступа к Яндекс.Спеллеру по HTTP предлагаются XML-, SOAP-, JSON- и JSONP-интерфейсы. Все интерфейсы обеспечивают одинаковую функциональность и используют одни и те же входные параметры. WSDL-документ для SOAP доступен по адресу: http://speller.yandex.net/services/spellservice?WSDL.
Функция вызова Web-сервиса:
В данной функции создается объект WSОпределения, который получает определение Web-сервиса из WSDL-документа, адрес документа приведен выше.
На основе определения Web-сервиса создается объект WSПрокси и связывается с точкой подключения Web-сервиса SpellServiceSoap.
Для инициализации объекта WSПрокси вся необходимая информация содержится в элементе <wsdl:service> WSDL-документа. В атрибуте name этого элемента содержится имя сервиса, а атрибут name дочерних элементов <wsdl:port> содержит имя точки подключения.
Адрес пространства имени содержится в теге targetNamespace корневого элемента WSDL-документа <wsdl:definitions>.
После инициализации объекта WSПрокси, выполняется операция Web-сервиса checkText(), в которую передаётся текст.
Операция веб-сервиса возвращает список ошибок в виде списка XDTO. Сам элемент списка представляется объектом XDTO.
К сожалению, платформа 1С во всем объеме не поддерживает работу с Web-сервисами средствами встроенного языка, например, задать значения атрибутов lang, options, format для входящего сообщения операции checkText() становится невозможным, так как нам дозволено только передавать параметры операции:
Термин XDTO (XML Data Transfer Objects), означает не какой-то всемирно принятый стандарт, поддерживаемый платформой 1С, а наоборот, стандарт рожденный в недрах фирмы 1С, хотя очень похож на XML Schema, на недоделанный XML Schema.
А так, работать можно! :)
Обработку вызова веб-сервиса Яндекс.Спеллер можно скачать по этой ссылке.
Механизм Web-сервисов позволяет использовать систему, написанную на платформе 1С, как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать ее с другими информационными системами с использованием сервис-ориентированной архитектуры (SOA).
Платформа 1С позволяет разработчику вызывать Web-сервисы, предоставляемые другими поставщиками, двумя способами:
- с помощью статических ссылок, создаваемых в дереве объектов конфигурации;
- с помощью динамических ссылок, создаваемых средствами встроенного языка.
1. Объект конфигурации WS-ссылки для использования механизма статических ссылок |
*WSDL-документ - язык описания веб-сервисов и доступа к ним, основанный на языке XML.
Рассмотрим пример вызова Web-сервиса с помощью динамической ссылки на примере сервиса проверки правописания Яндекс.Спеллер. Для доступа к Яндекс.Спеллеру по HTTP предлагаются XML-, SOAP-, JSON- и JSONP-интерфейсы. Все интерфейсы обеспечивают одинаковую функциональность и используют одни и те же входные параметры. WSDL-документ для SOAP доступен по адресу: http://speller.yandex.net/services/spellservice?WSDL.
Функция вызова Web-сервиса:
// Функция осуществляет проверку правописания текста.
//
// Параметры
// ПроверяемыйТекст - Строка - текст для проверки правописания.
//
// Возвращаемое значение:
// Строка - слова, в которых допущены ошибки.
//
&НаСервере
Функция ПроверитьОрфографию(ПроверяемыйТекст)
МестоположениеWSDL = "http://speller.yandex.net/services/spellservice?WSDL";
WSОпределение = Новый WSОпределения(МестоположениеWSDL);
ПространствоИмен = "http://speller.yandex.net/services/spellservice";
SpellService = Новый WSПрокси(WSОпределение, ПространствоИмен, "SpellService", "SpellServiceSoap");
Ответ = SpellService.checkText(ПроверяемыйТекст);
Ошибки = "";
Для Каждого Ошибка Из Ответ.error Цикл
Ошибки = Ошибки + "Ошибка в слове: " + Ошибка.word + Символы.ПС;
КонецЦикла;
Возврат Ошибки;
КонецФункции // ПроверитьОрфографию()
В данной функции создается объект WSОпределения, который получает определение Web-сервиса из WSDL-документа, адрес документа приведен выше.
На основе определения Web-сервиса создается объект WSПрокси и связывается с точкой подключения Web-сервиса SpellServiceSoap.
Для инициализации объекта WSПрокси вся необходимая информация содержится в элементе <wsdl:service> WSDL-документа. В атрибуте name этого элемента содержится имя сервиса, а атрибут name дочерних элементов <wsdl:port> содержит имя точки подключения.
2. Точки подключения Web-сервиса и его имя |
3. Адрес пространства имени Web-сервиса |
4. Операции Web-сервиса и их типы входящих и исходящих сообщений |
К сожалению, платформа 1С во всем объеме не поддерживает работу с Web-сервисами средствами встроенного языка, например, задать значения атрибутов lang, options, format для входящего сообщения операции checkText() становится невозможным, так как нам дозволено только передавать параметры операции:
5. Описание входящего сообщения операции checkText() |
А так, работать можно! :)
Обработку вызова веб-сервиса Яндекс.Спеллер можно скачать по этой ссылке.
Комментарии
Отправить комментарий