Вызов стороннего веб-сервиса

18 мая 2013

Задача

Необходимо получить внешний IP-адрес машины в сети интернет возможностями платформы. Для решения задачи будем использовать веб-сервис по адресу "http://www.develplatform.ru/Special/net.asmx". Функционал должен быть реализован во внешней обработке.

Веб-сервис

Веб-сервис предоставляет несколько методов для работы. Нас интересует метод "GetClientIP", который возвращает IP-адрес машины, с которой был выполнен его вызов.

Все, что нам нужно - это выполнить его вызов программным способом из внешней обработки.

Обращаемся к веб-сервису

Для обращения к веб-сервису и вызова метода "GetClientIP" написан следующий программный код:

Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	// Получаем WSDL-описание веб-сервиса
	ОписаниеСервиса = Новый WSОпределения("http://www.develplatform.ru/Special/net.asmx?wsdl");
	// Создаем прокси для дальнейшей работы с веб-сервисом
	Прокси = Новый WSПрокси(ОписаниеСервиса, "http://www.develplatform.ru/Special/", "Net", "NetSoap");
	// Получаем XDTO-объект описание метода "GetClientIP"	
	Тип = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.develplatform.ru/Special/").Получить("GetClientIP");
	// Создаем XDTO-объект метода веб-сервиса
	ФабрикаВебСервис = Прокси.ФабрикаXDTO.Создать(Тип);
	// Выполням метод "GetClientIP" веб-сервиса	и помещаем результат в элемент формы
	ЭлементыФормы.ВашIPАдрес.Значение = Прокси.GetClientIP(ФабрикаВебСервис).GetClientIPResult;
	
КонецПроцедуры

Здесь следует пояснить два момента:

1. Определение веб-сервиса создается на основе файла WSDL-описания. Путь к нему обычно такой:

"_Адрес веб сервиса_+ ?wsdl"

2. Если веб-методу необходимо передать параметры, то сначала нужно создать соответствующий XDTO-объект. В нашем примере метод "GetClientIP" не принимает параметров. 

В результате выполнения приведенного выше кода мы получим результат, показанный на скриншоте выше.

Результат

Поддержка веб-сервисов платформой 1С:Предприятие создает практически неограниченные возможности для расширения ее функционала. При разработке лишь встает вопрос о целесообразности их использования по сравнению с другими вариантами решения поставленной задачи.


comments powered by Disqus