← Назад ко всем вопросам

Как обрабатывать ошибки внешнего API в 1С (HTTP-коды, таймауты)

1️⃣ Как кратко ответить

Для обработки ошибок внешнего API в 1С используйте конструкцию Попытка...Исключение для отлова исключений и проверки HTTP-кодов. Анализируйте коды ответа сервера и обрабатывайте их в соответствии с логикой приложения. Для таймаутов используйте параметры Таймаут и ТаймаутСоединения в объекте HTTP-запроса.

2️⃣ Подробное объяснение темы

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

HTTP-коды

HTTP-коды статуса указывают на результат выполнения HTTP-запроса. Они делятся на несколько категорий:

  • 2xx: Успешные запросы (например, 200 OK).
  • 4xx: Ошибки клиента (например, 404 Not Found, 401 Unauthorized).
  • 5xx: Ошибки сервера (например, 500 Internal Server Error).

Для обработки HTTP-кодов в 1С используйте объект HTTPСоединение и метод Получить. Пример:

Попытка
    // Создаем HTTP-соединение
    HTTPСоединение = Новый HTTPСоединение("https://api.example.com");
​
    // Выполняем GET-запрос
    Ответ = HTTPСоединение.Получить("/resource");
​
    // Проверяем код состояния
    Если Ответ.КодСостояния = 200 Тогда
        // Обработка успешного ответа
        Данные = Ответ.ПолучитьТелоКакСтроку();
    ИначеЕсли Ответ.КодСостояния = 404 Тогда
        // Обработка ошибки "Не найдено"
        Сообщить("Ресурс не найден.");
    ИначеЕсли Ответ.КодСостояния = 500 Тогда
        // Обработка ошибки сервера
        Сообщить("Ошибка сервера. Попробуйте позже.");
    КонецЕсли;
Исключение
    // Обработка исключений
    Сообщить("Ошибка при выполнении запроса: " + ОписаниеОшибки());
КонецПопытки;

Таймауты

Таймауты определяют максимальное время ожидания ответа от сервера. В 1С можно задать два типа таймаутов:

  • ТаймаутСоединения: Время ожидания установления соединения.
  • Таймаут: Время ожидания ответа после установления соединения.

Пример настройки таймаутов:

Попытка
    // Создаем HTTP-соединение с таймаутами
    HTTPСоединение = Новый HTTPСоединение("https://api.example.com");
    HTTPСоединение.ТаймаутСоединения = 10; // 10 секунд на установление соединения
    HTTPСоединение.Таймаут = 30; // 30 секунд на получение ответа
​
    // Выполняем GET-запрос
    Ответ = HTTPСоединение.Получить("/resource");
​
    // Проверяем код состояния
    Если Ответ.КодСостояния = 200 Тогда
        Данные = Ответ.ПолучитьТелоКакСтроку();
    Иначе
        Сообщить("Ошибка: " + Ответ.КодСостояния);
    КонецЕсли;
Исключение
    // Обработка исключений, включая таймауты
    Сообщить("Ошибка при выполнении запроса: " + ОписаниеОшибки());
КонецПопытки;

Зачем это нужно

Обработка ошибок и таймаутов позволяет:

  • Избежать сбоев в работе приложения при недоступности внешнего API.
  • Предоставить пользователю понятные сообщения об ошибках.
  • Реализовать логику повторных попыток или альтернативных действий при сбоях.

Эти механизмы делают интеграцию с внешними сервисами более надежной и устойчивой к непредвиденным ситуациям.

Тема: Интеграции
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки