Итак, сначала рассмотрим пример получения данных при помощи HTTP-запросов к HTTP-сервисам, разработанных нами в предыдущем разделе. Для большей универсальности URL, по которому мы обращаемся к HTTP-сервису, будем указывать непосредственно в поле ввода демонстрационной обработки.
Обработчик команды, получающей данные, заполним следующим образом (листинг 1.76).
Листинг 1.76. Обработчик команды «ПолучитьДанные»
&НаКлиенте
Процедура ПолучитьДанные(Команда)
// Сформировать строку URL.
АдресРесурса = СокрЛП(Адрес);
// Отправить запрос на сервер.
ВыполнитьЗапрос("GET", АдресРесурса, "");
КонецПроцедуры
В этом обработчике в переменной АдресРесурса мы запоминаем значение реквизита обработки Адрес, в котором хранится URL для обращения к HTTP-сервису.
Затем вызываем процедуру ВыполнитьЗапрос() и передаем в нее в качестве параметров адрес ресурса и имя метода ("GET"), котoрый надо выполнить на сервере (листинг 1.77).
Листинг 1.77. Процедура «ВыполнитьЗапрос»
&НаКлиенте
Процедура ВыполнитьЗапрос(ИмяМетода, АдресРесурса, СтрокаТелаЗапроса)
Сообщение = Новый СообщениеПользователю;
// Установить имя сервера.
СерверИсточник = "localhost";
Попытка
// Создать HTTP-соединение с сервером localhost.
HTTPСоединение = Новый HTTPСоединение(СерверИсточник);
Исключение
// Вывести сообщение об ошибке соединения с сервером.
Сообщение.Текст = "Не удалось соединиться с сервером: " + СерверИсточник;
Сообщение.Сообщить();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
// Создать HTTP-запрос на основе URL.
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
// Установить тело запроса из строки JSON.
Если ИмяМетода <> "DELETE" И ИмяМетода <> "GET" Тогда
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаТелаЗапроса);
КонецЕсли;
Попытка
// Получить ответ сервера в виде объекта HTTPОтвет.
Результат = HTTPСоединение.ВызватьHTTPМетод(ИмяМетода, HTTPЗапрос);
// Получить содержимое ответа сервера в виде строки.
Сообщение.Текст = Результат.ПолучитьТелоКакСтроку();
Сообщение.Сообщить();
Исключение
// Вывести сообщение об ошибке при получении ответа сервера.
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КонецПроцедуры
В этой процедуре в качестве имени сервера мы указываем "localhost", создаем на его основе объект HTTPСоединение и соединяемся с этим сервером.
Далее на основе URL, содержащегося в параметре АдресРесурса, создаем HTTPЗапрос. Затем, в случае если это не DELETE- и не GET-запрос, устанавливаем тело запроса из строки JSON, содержащейся в параметре СтрокаТелаЗапроса.
После этого при помощи метода ВызватьHTTPМетод() объекта HTTPСоединение отправляем на сервер запрос (в данном случае с методом GET) к информационной базе. Ответ сервера в виде объекта HTTPОтвет будет возвращен в переменную Результат. C помощью метода ПолучитьТелоКакСтроку() объекта HTTPОтвет мы получаем тело ответа в виде строки и выводим его в сообщение.
Проверим, как это работает.
Например, мы хотим получить список всех сотрудников из справочника Сотрудники. Это можно сделать с помощью HTTP-сервиса Сотрудники с корневым URL employees.
В поле ввода демонстрационной обработки укажем тот же URL, который мы вводили для этого в браузере, – /REST/hs/employees (только без имени сервера) и нажмем кнопку Получить данные. В результате в окне сообщений мы увидим ответ сервера, содержащий список всех сотрудников (рис. 1.16).
Рис. 1.16. Ответ сервера
Теперь получим список последних цен товаров из регистра сведений ЦеныТоваров, актуальных на конкретную дату. Это можно сделать с помощью HTTP-сервиса ЦеныТоваров с корневым URL prices.
В поле ввода обработки укажем тот же URL, который мы вводили для этого в браузере, – /REST/hs/prices/date/20190701 (только без имени сервера) и нажмем кнопку Получить данные. В результате в окне сообщений мы увидим ответ сервера, содержащий список последних цен товаров (рис. 1.17).
Рис. 1.17. Ответ сервера