Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
Клиенты
Вики
Затраты
Отчёты и аналитика
FAQ
Типы отчётов
Использование отчётов
Группировка данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Выражения вычисляемых полей
Особые колонки отчётов с временными рядами
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
Настройка и администрирование
Типовой порядок настройки системы
On-premises
API
История изменений
Термины и определения

SafeHttpClient

Обновлено: 13.03.2026

SafeHttpClient — безопасная обёртка над HttpClient, предназначенная для выполнения HTTP-запросов из динамического кода.

Класс используется в обработчиках платформы, например:

  • CustomHooks;
  • ScheduledJobHandler;
  • LifecycleRoleResolver.

Он предоставляет защищённый механизм для интеграции с внешними системами. Клиент ограничивает небезопасные сетевые операции и предотвращает доступ к внутренним ресурсам инфраструктуры.

Экземпляр клиента можно получить через контекст:

var http = context.GetHttpClient();

Основные ограничения безопасности

SafeHttpClient применяет ряд ограничений для предотвращения небезопасных сетевых запросов.

Разрешённые схемы

Поддерживаются только схемы:

  • http;
  • https.

Использование других схем URL запрещено.

Ограничение количества запросов

Для каждого URL действует ограничение частоты запросов. Параметры ограничения:

  1. Максимум 10 запросов.
  2. За 1 минуту.
  3. Для одного URL.

Если лимит превышен, будет выброшено исключение:

Rate limit exceeded

Интерфейс

Основные методы клиента:

public class SafeHttpClient : IDisposable
{
    Task<string> GetStringAsync(string url);

    Task<HttpResponseMessage> SendAsync(HttpRequestMessage request);
}

GetStringAsync

Task<string> GetStringAsync(string url)

Отправляет HTTP GET-запрос и возвращает тело ответа в виде строки.

Перед выполнением запроса клиент проверяет:

  • корректность URL;
  • допустимость схемы;
  • что адрес не является приватным;
  • лимит запросов.

Если сервер возвращает код ошибки, будет выброшено исключение.

SendAsync

Task<HttpResponseMessage> SendAsync(HttpRequestMessage request)

Отправляет произвольный HTTP-запрос. Метод поддерживает:

  • GET;
  • POST;
  • PUT;
  • PATCH;
  • DELETE;
  • другие HTTP-методы.

Перед отправкой запроса выполняются те же проверки безопасности, что и в GetStringAsync.

Если ответ сервера содержит код ошибки, метод вызывает EnsureSuccessStatusCode() и генерирует исключение.

Примеры

GET-запрос

var http = context.GetHttpClient();

var response = await http.GetStringAsync(
    "https://api.example.com/projects"
);

await context.Log("Получен ответ от API");

POST-запрос

var http = context.GetHttpClient();

var request = new HttpRequestMessage(
    HttpMethod.Post,
    "https://api.example.com/projects"
);

request.Content = JsonContent.Create(new
{
    name = "Test project"
});

var response = await http.SendAsync(request);

Освобождение ресурсов

SafeHttpClient реализует IDisposable. Однако при использовании клиента через context.GetHttpClient() освобождение ресурсов выполняется автоматически платформой.

Рекомендации

  • Используйте SafeHttpClient вместо обычного HttpClient в динамическом коде.
  • Для интеграций выполняйте запросы только к публичным API.
  • Обрабатывайте возможные исключения сетевых операций.
  • Не выполняйте большое количество запросов к одному URL подряд, чтобы избежать ограничения rate limit.
Предыдущая
 IContextEntityService
Следующая
NotificationService 

Содержание

Основные ограничения безопасности Разрешённые схемы Ограничение количества запросов Интерфейс GetStringAsync SendAsync Примеры GET-запрос POST-запрос Освобождение ресурсов Рекомендации
Ничего не найдено

Перейти на русскую версию?