Работа с 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-сообщений при помощи потоков можно прочитать в статье про двоичные данные.

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

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

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