Вызов 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() | 
А так, работать можно! :)
Обработку вызова веб-сервиса Яндекс.Спеллер можно скачать по этой ссылке.
Комментарии
Отправить комментарий