Работа с HTTP в 1С 8.2 и 8.3

 

В этой статье я попробую рассказать о том, какими средствами располагает технологическая платформа для работы с протоколом HTTP. В начале будет немного общей информации, а затем конкретные примеры. Отмечу, что в статье используется технологическая платформа версии 8.3.12.1595.

Общая информация

Для работы с протоколом HTTP в 1С существуют три основных объекта — HTTPСоединение, HTTPЗапрос и HTTPОтвет, кроме этого для создания HTTPS-соединения используется объект ЗащищенноеСоединениеOpenSSL, а для соединения через прокси-сервер объект ИнтернетПрокси. Существует еще несколько объектов, которые могут использоваться при работе с протоколом HTTP, но используются они достаточно редко и не так важны.

Назначение основных объектов следует из названия.

HTTPСоединение отвечает за соединение с сервером — в свойствах объекта, помимо обязательного адреса, можно указать порт, прокси, логин, пароль, таймаут, защищенное соединение и флаг аутентификации ОС, а методы повторяют основные методы HTTP.

HTTPЗапрос позволяет описать что именно мы хотим от сервера — в свойствах нужно обязательно указать адрес ресурса к которому мы обращаемся, кроме этого имеется возможность указать какие-либо заголовки, методы же, в свою очередь, позволяют различными способами установить и получить тело запроса.

HTTPОтвет является результатом выполнения запроса к серверу — из свойств мы можем узнать ответные заголовки и код состояния, а методы позволяют получить тело ответа различными способами.

Список заголовков HTTP

Список кодов состояния HTTP

ИнтернетПрокси позволяет указать настройки прокси-сервера — с помощью метода Установить()  можно указать параметры для подключения к прокси-серверу, отмечу, что свойства «Пароль» и «Пользователь» являются устаревшими, использовать их не рекомендуется.

ЗащищенноеСоединениеOpenSSL создает защищенное соединение OpenSSL — имеется возможность указать сертификат клиента и/или сертификат удостоверяющего центра, в большинстве случаев (для доступа к обычным сайтам по протоколу HTTPS) указывать какие либо сертификаты не требуется.

Заканчиваем с теорией и переходим к практике.

Практические задачи при работе с HTTP

В качестве практической части рассмотрим задачи, которые чаще всего встречаются при работе с протоколом HTTP в 1С

Как получить страницу GET-запросом?

Как обработать перенаправление в HTTP-запросе?

При попытке получить главную страницу Яндекса мы получаем ответ, что страница «перемещена временно» (код состояния 302). При помощи заголовка Location мы можем определить куда нас отправляет сервер — на безопасную версию главной страницы Яндекса (на большинстве современных ресурсов действует переадресация с http на https).

Далее разбиваем адрес из заголовка Location на составные части, при помощи функции «СтруктураURI», которую я позаимствовал из библиотеки стандартных подсистем.

 

Как сделать HTTPS-запрос из 1С?

Немного изменим предыдущий пример — теперь при получении кода 302 мы создаем безопасное соединение и выполняем HTTPS-запрос (адрес сервера и адрес ресурса берем из структуры URI). Функцию «СтруктураURI» можно взять из примера выше.

Как сделать HTTP/HTTPS запрос через прокси-сервер из 1С?

При установке параметров прокси-сервера необходимо указать протокол, для которого устанавливаются параметры.

Как установить заголовки в HTTP-запросе из 1С?

Установить заголовки HTTP-запроса может потребоваться в самых различных ситуациях, сделать это несложно.

Как сохранить картинку или скачать файл с сайта HTTP-запросом из 1С?

Скачать файл/сохранить картинку при помощи HTTP-запроса из 1С совсем не сложно. В примере показано скачивание логотипа компании «1С»  и два способа записи этого логотипа на диск.

Как послать POST-запрос из 1С?

POST-запросы отличаются от GET-запросов тем, что помимо заголовков могут содержать еще и тело. Именно поэтому в случаях, когда нужно отправить какую-то информацию на сайт (авторизация, файл, что-то еще)  необходимо воспользоваться POST-запросом.

В качестве небольшого примера рассмотрим обращение с сервису проверки орфографии Яндекс.Спеллер через POST-запрос.

Отдельно отмечу заголовок application/x-www-form-urlencoded  — он означает, что параметры в теле запроса кодируются в кортежах с ключом, разделенных символом «&», с «=» между ключом и значением. Если же в теле запроса требуется отправить двоичные данные, то в заголовке «Content-Type» следует указать multipart/form-data;boundary=»boundary» (вместо «boundary» можно выбрать другой разделитель). Достаточно неплохо про метод POST написано здесь.

Об отправке составных (multipart) HTTP-сообщений при помощи потоков можно прочитать в статье про двоичные данные.

На этом все, надеюсь, что данная статья была Вам полезна.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (оценок: 16, средняя оценка: 4,38 из 5)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Комментарии: 5
  1. Владимир

    Добрый день

    Есть ссылка http://sait2/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск

    При выполнении в браузере по ней открывается форма отчета и сразу формируется Exel файл

    СерверИсточник = «sait2»;
    Адрес = Новый HTTPЗапрос(«/pls/info/REESTR_PERSONS_TO_1C.run?rep_user=IVANOV&p_com=30274&p_reestr_format=xls&p_action=Пуск»);
    ИмяВходящегоФайла = C:\1\1.xls;
    НТТР = Новый HTTPСоединение(СерверИсточник);
    НТТР.Получить(Адрес, ИмяВходящегоФайла);
    ВходящийФайл = Новый Файл(ИмяВходящегоФайла);

    При выполнении, в файл сохраняется только форма с параметрами, а не сам готовый отчет

    Надо что бы при запуске из один 1С формировался файл отчета и сохранялся на диск

    В чем может быть проблема?

    Это ссылка на получение отчета из базы оракл и
    и в базе так же происходит работа через internet explorer

    может надо другим способом запускать формирование файла отчета?

  2. Khib

    понравилось ОДОБРЯЕМ!!!!!!!!!!!

    ——
    пэт преформы купить цена

    СПАСИБО ОЧЕНЬ КЛАСНО!!!!!!!!!!!!!!!!!!

    ——
    пэт оборудование цена

    По моему мнению Вы допускаете ошибку. Пишите мне в PM, поговорим.

    ——
    https://master-climat.com.ua/

  3. Сергей

    Хорошая статья!

  4. MJax

    Это отличный вариант

    ——
    проверка кбм осаго рса

    Блестящая фраза

    ——
    выписка из егрн на дом

    куда катится мир?

    ——
    https://vaz-russia.com/remont-vaz-2170-priora/zamena-tormoznogo-diska-na-priore.html

    Вы не правы. Могу это доказать. Пишите мне в PM, поговорим.

    ——
    https://nailmasteru.ru/gel-lak-french-office-nude-style-08-gc-12ml

    Ничего прикольного тут нет

    ——
    заказать профессиональную косметику для волос

    у мня уже есть

    ——
    аккаунты вконтакте

    Специально зарегистрировался на форуме, чтобы сказать Вам спасибо за помощь в этом вопросе, как я могу Вас отблагодарить?

    ——
    купить трастовый аккаунт facebook

    Звучит заманчиво

    ——
    клубничка

    Я считаю, что Вы ошибаетесь. Могу отстоять свою позицию. Пишите мне в PM.

    ——
    игровой автомат без регистрации обезьянка

    хоть книги не читай…

    ——
    игровые автоматы book of ra играть бесплатно

  5. ViBet

    Этот топик просто бесподобен :), мне нравится .

    ——
    ремонт вариатора рав

    Да, я вас понимаю. В этом что-то есть и мне кажется это очень отличная мысль. Полностью с Вами соглашусь.

    ——
    публичная кадастровая карта рф

    ….не плохо

    ——
    rtx 3080 купить gigabyte

    Я извиняюсь, но, по-моему, Вы не правы. Могу отстоять свою позицию. Пишите мне в PM, пообщаемся.

    ——
    фланец с пп покрытием цена

    Жаль, что сейчас не могу высказаться — тороплюсь на работу. Вернусь — обязательно выскажу своё мнение по этому вопросу.

    ——
    кабель инкаб цена

    Авторитетная точка зрения, забавно…

    ——
    лечение акне

    я ожидала лучшего

    ——
    free signals for forex trading

    У меня похожая ситуация. Готов помочь.

    ——
    buy own smm panel

    Как нельзя лучше!

    ——
    https://modscraft.net/mods/2893-definitive-campfire-addon-mod.html

    Какая фраза… супер, замечательная идея

    ——
    бесплатная накрутка просмотров в инстаграме

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: