Простой метод получения данных по HTTP
Пример работает в толстом, тонком и веб клиентах.
&НаКлиенте
Процедура ПолучитьДанные(Команда)
// Сформировать строку URL.
АдресРесурса = СокрЛП(Адрес);
// Отправить запрос на сервер.
СтруктураОтвета = ВыполнитьЗапрос(АдресРесурса);
Если СтруктураОтвета.Ошибка Тогда
Сообщить(СтруктураОтвета.ОписаниеОшибки);
Элементы.ТипДня.Заголовок = "";
Иначе
Сообщить(СтруктураОтвета.ТипДня);
Элементы.ТипДня.Заголовок = СтруктураОтвета.ТипДня;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВыполнитьЗапрос(АдресРесурса)
Соединение = Новый HTTPСоединение(АдресРесурса);
// Установим заголовки
Заголовки = Новый Соответствие;
Заголовки.Вставить("User-Agent","CrazyElephant_X-1c-1.01 (79636902266@ya.ru)");
// Установим текст запроса
ТекстЗапроса = Формат(Дата,"ДФ=yyyy-MM-dd;") + "?covid=1";
Запрос = Новый HTTPЗапрос("/" + ТекстЗапроса,Заголовки);
Ответ = Соединение.Получить(Запрос);
СтруктураОтвета = ОбработатьРезультатЗапроса(Ответ.КодСостояния,Ответ.ПолучитьТелоКакСтроку());
Возврат СтруктураОтвета;
КонецФункции
&НаСервере
Функция ОбработатьРезультатЗапроса(КодСостояния,ТелоОтвета)
СтруктураОтвета = Новый Структура;
СтруктураОтвета.Вставить("Ошибка",Ложь);
СтруктураОтвета.Вставить("Ответ","");
СтруктураОтвета.ТипДня = ТелоОтвета;
Если КодСостояния = 200 Тогда
// все ок
ИначеЕсли КодСостояния = 400 Тогда
СтруктураОтвета.Ошибка = Истина;
// ошибка в теле запроса
ИначеЕсли КодСостояния = 404 Тогда
СтруктураОтвета.Ошибка = Истина;
// http сервис не найден
Иначе
СтруктураОтвета.Ошибка = Истина;
// неизвестная ошибка
КонецЕсли;
Возврат СтруктураОтвета;
КонецФункции
HTTPS запрос
Для установки соединения через HTTPS нужно изменить в коде всего 1 строчку.
// Строку соединения
Соединение = Новый HTTPСоединение(АдресРесурса);
// Меняем на строку соединения с указанем порта и защищенного соединения
Соединение = Новый HTTPСоединение(АдресРесурса,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Получение файла через HTTP
Работу с файлами разберем на примере скачивания картинки.
&НаКлиенте
Процедура СохранитьКартинкуСкачатьФайлЧерезHTTPв1С(Команда)
Соединение = Новый HTTPСоединение("static.1c.ru");
Запрос = Новый HTTPЗапрос("/images/logo.png");
ПутьДляСохранения = "C:\1.png";
// записываем на диск, так
Ответ = Соединение.Получить(Запрос, ПутьДляСохранения);
// либо так
Ответ = Соединение.Получить(Запрос);
Ответ.ПолучитьТелоКакДвоичныеДанные().Записать(ПутьДляСохранения);
КонецПроцедуры
Работа через прокси
Для работы через прокси, в соединении необходимо создать прокси. При установке параметров прокси-сервера обязательно указание протокола.
// Создаем новый прокси
Прокси = Новый ИнтернетПрокси;
// Заполняем настройки прокси с указанием нужного протокола
Прокси.Установить("http", "hostname", 8000, "login", "password");
// Прокси.Установить("https", "hostname", 8000, "login", "password");
// Указываем прокси в HTTP соединении
Соединение = Новый HTTPСоединение(АдресРесурса,,,,Прокси);
