1CLenta.ru  

Запросить web-страницу через HTTPСоединение

Программирование системы     18.05.2016 11:12     9596

Во встроенном языке 1С есть объект HTTPСоединение для работы с web.
С помощью объекта HTTPСоединение встроенного языка 1С, можно запрашивать web-страницы. Данный объект поддерживает работу с протоколами: HTTP 1.0, HTTP 1.1, SSL 3.0, TLS 1.0.

Функция ПолучитьHTMLСтраницу()


Функция возвращает текст запрошенной HTML страницы.
Переменные
  • Сервер - адрес сервера без http
  • АдресСтраницы - строка URL страницы без домена
  • Кодировка - строка кодировки отправки и считывания данных(utf-8, windows-1251,...)
  • ЗащищенноеСоединение - булево значение, которое указывает использовать защищённое соединение или нет
  • Таймаут - время ожидания соединения с сервером измеряется в секундах

Получение результата URL запроса из объекта НТТРОтвет

Функция ПолучитьHTMLСтраницу1()

Сервер = "1c.ru";
АдресСтраницы = "map.jsp";
Кодировка = "utf-8";
ЗащищенноеСоединение = Истина;
Таймаут = 100;
SSL = ?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);

ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Host", Сервер);
ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");

Попытка

НТТР = Новый HTTPСоединение(Сервер, , , , , Таймаут, SSL);
ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницы, ЗаголовкиHTTP);

//Отправка POST-запроса
ПараметрыPOST = "&m1=value1&m2=value2&m3=value3";
ЗапросHTTP.УстановитьТелоИзСтроки(ПараметрыPOST);
НТТРОтвет = НТТР.ОтправитьДляОбработки(ЗапросHTTP);

//Отправка GET-запроса
НТТРОтвет = НТТР.Получить(ЗапросHTTP);

Исключение

Сообщить("Не удалось запросить web страницу " + ОписаниеОшибки());
Возврат "";

КонецПопытки;

Возврат НТТРОтвет.ПолучитьТелоКакСтроку(Кодировка);

КонецФункции


Получение результата URL запроса из текстового файла

Функция ПолучитьHTMLСтраницу2()

Сервер = "1c.ru";
АдресСтраницы = "map.jsp";
Кодировка = "utf-8";
ЗащищенноеСоединение = Истина;
Таймаут = 100;
SSL = ?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);

ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Host", Сервер);
ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");

Попытка

НТТР = Новый HTTPСоединение(Сервер, , , , , Таймаут, SSL);
ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницы, ЗаголовкиHTTP);

//Отправка POST-запроса
ПараметрыPOST = "&m1=value1&m2=value2&m3=value3";
ЗапросHTTP.УстановитьТелоИзСтроки(ПараметрыPOST);
НТТРОтвет = НТТР.ОтправитьДляОбработки(ЗапросHTTP, "Text.txt");

//Отправка GET-запроса
НТТРОтвет = НТТР.Получить(ЗапросHTTP, "Text.txt");

Исключение

Сообщить("Не удалось запросить web-страницу " + ОписаниеОшибки());
Возврат "";

КонецПопытки;

ТД = Новый ТекстовыйДокумент;
ТД.Прочитать("Text.txt", Кодировка);
Результат = ТД.ПолучитьТекст();

Возврат Результат;

КонецФункции


Также, используя COM-технологию можно запросить web-страницу через COM-объект WinHTTP.WinHttpRequest.

Комментарии (0)