Простой метод получения данных по 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Соединение(АдресРесурса,,,,Прокси);