HTTP-соединение в 1С

HTTP-соединение в 1С может использоваться для получения информации с сайтов, например, файла с заказами клиентов. При использовании HTTP-соединения важно, чтобы сайт «понимал» запросы, передаваемые 1С, и в ответ отправлял необходимую информацию.

Рассмотрим пример, когда нужно получить с сайта в 1С некий файл. При этом на сайте есть авторизация и cookies.

Перед тем как писать процедуру соединения с сайтом в 1С необходимо определить, какие команды понимает сайт и как он на них реагирует. В моем случае соединение происходило к скрипту по адресу http://vashsite.ru/1_c/1c_exchange.php и проходило в 2 этапа:

  1. Авторизация: передавались параметры type=sale и mode=checkauth. Полный адрес запроса с параметрами выглядел так: http://vashsite.ru/1_c/1c_exchange.php?type=sale&mode=checkauth. Если логин и пароль правильные, то сайт передавал ответ в виде файла со следующим содержанием:

    sucсess
    Имя cookies
    Значение cookies

  2. Запрос данных: передавались параметры type=sale и mode=query. Полный адрес запроса с параметрами выглядел так: http://vashsite.ru/1_c/1c_exchange.php?type=sale&mode=query. Также должны быть переданы имя и значение cookies. В ответ сайт присылал файл с необходимыми данными.

Теперь опишем процедуру соединения с сайтом в 1С

Процедура ПолучитьФайлЗаказа ()

ИмяФайлаОтвета = ПолучитьИмяВременногоФайла(); //Создаем временный файл и получаем его адрес

Попытка

Соединение=новый HTTPСоединение("vashsite.ru", 80,Логин, Пароль); //Подключаемся к серверу, порт 80 - стандартный, логин и пароль нало указать
Соединение.Получить("1_c/1c_exchange.php?type=sale&mode=checkauth", ИмяФайлаОтвета); //авторизуемся, ответ сайта будет помещен во временный файл

Исключение

Сообщить ("Связь с сервером не установлена");

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

//Читаем файл с ответом сайта
ФайлОтвета = Новый Файл(ИмяФайлаОтвета);

Если ФайлОтвета.Существует() Тогда

ТекстОтвета = Новый ТекстовыйДокумент();
ТекстОтвета.Прочитать(ИмяФайлаОтвета);

Если ТекстОтвета.КоличествоСтрок()>0 Тогда

ОтветСервера = ТекстОтвета.ПолучитьТекст();

Иначе

СтрокаСообщенияПользователю = СтрокаСообщенияПользователю + Символы.ПС + "Получение данных с сервера: Получен пустой ответ сервера.";

КонецЕсли;

Иначе

СтрокаСообщенияПользователю = СтрокаСообщенияПользователю + Символы.ПС + "Получение данных с сервера: Ответ сервера не получен.";

КонецЕсли;

//Читаем cookies и формируем из них строку, которая будет в дальнейшем передаваться на сайт
КукиИмя            = СтрПолучитьСтроку(ОтветСервера, 2);
КукиЗначение       = СтрПолучитьСтроку(ОтветСервера, 3);
ЗаголовкиЗапросов = "Cookie: " + КукиИмя + "=" + КукиЗначение;

//создаем еще один временный файл, туда будут помещены данные, переданные сайтом
ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();

// Запрашиваем данные, передаем параметры запроса и строку с cookies
Попытка

Соединение.Получить("1_c/1c_exchange.php?type=sale&mode=query", ИмяФайлаОтвета, СокрЛП(ЗаголовкиЗапросов)); //ответ сайта записан во временный файл

Исключение

Сообщить ("Ошибка при получении файла обмена");

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

КонецПроцедуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *