Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
Клиенты
Вики
Затраты
Отчёты и аналитика
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-запрос Освобождение ресурсов Рекомендации
Ничего не найдено

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