При разработке и публикации веб-сервисов в 1С часто возникает задача быстро проверить работоспособность созданной операции. Разберем, возможно ли выполнить вызов метода веб-сервиса непосредственно из адресной строки браузера и какие инструменты лучше всего использовать для тестирования.
Проанализируем техническую сторону работы веб-сервисов в платформе 1С:
Web-сервисы в платформе 1С реализует стандарты SOAP 1.1 и SOAP 1.2. Вызов любой операции веб-сервиса требует отправки HTTP-запроса методом POST со строго структурированным XML-телом (конвертом SOAP Envelope) и специальными заголовками (например, Content-Type: text/xml или SOAPAction).GET без тела запроса. Поэтому при переходе по ссылке вида http://сервер/база/ws/ws1.1cws?wsdl браузер может только отобразить WSDL-описание сервиса, но выполнить сам метод с передачей параметров невозможно.Самым распространенным и удобным инструментом для отладки SOAP-сервисов является утилита SoapUI. Рассмотрим порядок работы с ней:
http://localhost/base/ws/MyWebService.1cws?wsdl.Если требуется выполнить вызов из командной строки Windows без установки сторонних графических утилит, воспользуемся командлетом New-WebServiceProxy в PowerShell. Разберем пример сценария:
$wsdlUrl = "http://localhost/base/ws/MyWebService.1cws?wsdl"
$proxy = New-WebServiceProxy -Uri $wsdlUrl -UseDefaultCredential
$result = $proxy.MyMethod("ТестоваяСтрока")
Write-Host $result
PowerShell динамически создаст прокси-объект на основе WSDL-схемы и выполнит вызов метода через стандартные механизмы .NET Framework.
Для проверки сервиса внутри самой платформы создадим внешнюю обработку и выполним программный вызов через объекты WSОпределения и WSПрокси. Посмотрим на типовой пример кода:
Определения = Новый WSОпределения("http://localhost/base/ws/MyWebService.1cws?wsdl", "ИмяПользователя", "Пароль");
URIПространстваИмен = "http://www.mycompany.ru/ws";
Сервис = Определения.Сервисы[0];
ТочкаПодключения = Сервис.ТочкиПодключения[0];
Прокси = Новый WSПрокси(Определения, URIПространстваИмен, Сервис.Имя, ТочкаПодключения.Имя);
Прокси.Пользователь = "ИмяПользователя";
Прокси.Пароль = "Пароль";
Результат = Прокси.MyMethod("Тестовое значение");
Если по условиям задачи вызов обязательно должен происходить именно из адресной строки браузера через обычный перейдет по URL с GET-параметрами, вместо объекта Web-сервисы следует использовать объект метаданных HTTP-сервисы:
/create/{Param}).GET и привяжем к нему процедуру-обработчик.HTTPСервисЗапрос, выполним создание элемента справочника и вернем результат через HTTPСервисОтвет.В этом случае запрос вида http://сервер/база/hs/myservice/create/НовыйЭлемент можно будет вызывать напрямую через любой интернет-браузер.