1С:Предприятие 8.2 /
Разработчикам /
Платформа, механизмы и технологии
Пример работы с HTTPСоединение
Пример демонстрирует обработку кодов состояния , которые может вернуть HTTP-сервер. Отдельно обрабатываются ошибки запроса, ошибки сервера и перенаправление на новый URL-адрес.
Для работы примера требуется платформа " 1С:Предприятие " версии 8.2.18 и выше или 8.3.3 и выше.
&НаКлиенте Процедура ВыполнитьЗапрос(Команда) ВыполнитьHTTPЗапрос("http://example.com"); КонецПроцедуры &НаКлиенте Процедура ВыполнитьHTTPЗапрос(ПолныйАдресРесурса) СтруктураURI = СтруктураURI(ПолныйАдресРесурса); HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт); HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере); Попытка Результат = HTTPСоединение.Получить(HTTPЗапрос); Исключение // исключение здесь говорит о том, что запрос не дошел до HTTP-Сервера Сообщить("Произошла сетевая ошибка!"); ВызватьИсключение; КонецПопытки; // Анализируем фатальные ошибки // В большинстве случаев нужно остановить работу и показать пользователю сообщение об ошибке, // включив в него HTTP-статус // Ошибки 4XX говорят о неправильном запросе - в широком смысле // Может быть неправильный адрес, ошибка аутентификации , плохой формат запроса // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4 Если Результат.КодСостояния >= 400 и Результат.КодСостояния < 500 Тогда Сообщить("Код статуса больше 4XX, ошибка запроса. Код статуса: " + Результат.КодСостояния); КонецЕсли; // Ошибки 5XX говорят о проблемах на сервере (возможно, прокси-сервер) // Это может быть программная ошибка, нехватка памяти, ошибка конфигурации и т.д. // Подробнее смотри http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5 Если Результат.КодСостояния >= 500 и Результат.КодСостояния <600 Тогда Сообщить("Код статуса больше 5XX, ошибка сервера. Код статуса: " + Результат.КодСостояния); КонецЕсли; // Обрабатываем перенаправление Если Результат.КодСостояния >= 300 и Результат.КодСостояния < 400 Тогда Сообщить("Код статуса больше 3XX, Перенаправление. Код статуса: " + Результат.КодСостояния); Если Результат.КодСостояния = 302 Тогда Сообщить("Код статуса 302, Постоянное перенаправление."); АдресРесурса = Результат.Заголовки.Получить("Location"); Если АдресРесурса <> Неопределено Тогда Сообщить(" Выполняю запрос по новому адресу " + АдресРесурса); ВыполнитьHTTPЗапрос(АдресРесурса); Иначе Сообщить("Сервер не сообщил адрес ресурса!"); КонецЕсли; КонецЕсли; КонецЕсли; // Статусы 1XX и 2XX считаем хорошими Если Результат.КодСостояния < 300 Тогда Сообщить(" Скорее всего все хорошо "); Сообщить("Код статуса: " + Результат.КодСостояния); КонецЕсли; КонецПроцедуры &НаКлиенте Функция СтруктураURI(Знач СтрокаURI) Экспорт СтрокаURI = СокрЛП(СтрокаURI); // схема Схема = ""; Позиция = Найти(СтрокаURI, "://"); Если Позиция >0 Тогда Схема = НРег(Лев(СтрокаURI, Позиция - 1)); СтрокаURI = Сред(СтрокаURI, Позиция + 3); КонецЕсли; // строка соединения и путь на сервере СтрокаСоединения = СтрокаURI; ПутьНаСервере = ""; Позиция = Найти(СтрокаСоединения, "/"); Если Позиция >0 Тогда ПутьНаСервере = Сред(СтрокаСоединения, Позиция + 1); СтрокаСоединения = Лев(СтрокаСоединения, Позиция - 1); КонецЕсли; // информация пользователя и имя сервера СтрокаАвторизации = ""; ИмяСервера = СтрокаСоединения; Позиция = Найти(СтрокаСоединения, "@"); Если Позиция >0 Тогда СтрокаАвторизации = Лев(СтрокаСоединения, Позиция - 1); ИмяСервера = Сред(СтрокаСоединения, Позиция + 1); КонецЕсли; // логин и пароль Логин = СтрокаАвторизации; Пароль = ""; Позиция = Найти(СтрокаАвторизации, ":"); Если Позиция >0 Тогда Логин = Лев(СтрокаАвторизации, Позиция - 1); Пароль = Сред(СтрокаАвторизации, Позиция + 1); КонецЕсли; // хост и порт Хост = ИмяСервера; Порт = ""; Позиция = Найти(ИмяСервера, ":"); Если Позиция >0 Тогда Хост = Лев(ИмяСервера, Позиция - 1); Порт = Сред(ИмяСервера, Позиция + 1); КонецЕсли; Результат = Новый Структура; Результат.Вставить("Схема", Схема); Результат.Вставить("Логин", Логин); Результат.Вставить("Пароль", Пароль); Результат.Вставить("ИмяСервера", ИмяСервера); Результат.Вставить("Хост", Хост); Результат.Вставить("Порт", ?(Порт <> "", Число(Порт), Неопределено)); Результат.Вставить("ПутьНаСервере", ПутьНаСервере); Возврат Результат; КонецФункции
Другие материалы по теме:
выполняю запрос по новому адресу, код статуса 302, код статуса:, постоянное перенаправление., произошла сетевая ошибка!, сервер не сообщил адрес ресурса!, скорее всего все хорошо, конецфункции, неопределено, пароль, полный, сервер, ошибка, роль, конецпроцедуры, схема, получить, конфигуратор, ошибки, строка, код, результат, предприятие, пример, конфигурации
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Платформа, механизмы и технологии
Другие материалы по теме:
Пример работы с HTTPСоединение
Общесистемные механизмы и принципы
Использование REST web-сервисов в "1C:Предприятии 8"
Использование модулей с повторным использованием возвращаемых значений
Вопросы безопасности информационных систем на платформе 1С:Предприятие 8.1
Нас находят: httpсоединение в 1с 8 3, 1с HTTPСоединение, пример Записать() в Нттрсоединение
Мы на Facebook