В работе с HTTP-запросами в Delphi часто возникает необходимость отправки данных в теле запроса, особенно при взаимодействии с REST API. Компонент TSslHttpRest из библиотеки ICS предоставляет удобные средства для работы с HTTP-запросами, однако у него есть свои особенности, особенно при отправке JSON-массивов или бинарных данных.
В этой статье мы рассмотрим:
- Как правильно использовать SendStream в TSslHttpRest.
- Ограничения при работе с методами GET и DELETE.
- Альтернативные способы формирования тела запроса.
Отправка данных через SendStream
Классический способ отправки данных через THttpCli (из OverbyteIcsHttpPost1.pas) не подходит для TSslHttpRest. Вместо этого можно использовать свойство SendStream, которое позволяет передавать данные в виде потока.
Пример отправки JSON через SendStream
Допустим, у нас есть JSON-массив, который нужно отправить в теле POST-запроса:
Согласно RFC 9110, метод DELETE не должен содержать тело запроса, хотя некоторые API могут это поддерживать. Если сервер ожидает JSON в теле DELETE-запроса, можно использовать SendStream аналогично POST:
Однако учтите, что промежуточные прокси или брандмауэры могут блокировать такие запросы.
Альтернативные способы отправки данных
1. Использование TRestParams
Компонент TRestParams позволяет формировать параметры запроса, но имеет ограничения при работе с JSON-массивами. В новых версиях ICS (начиная с SVN-обновления от 27.06.2025) добавлена поддержка массивов через свойство RParamFmt:
Статья описывает использование метода `SendStream` в компоненте `TSslHttpRest` для отправки данных в HTTP-запросах, включая примеры работы с JSON и ограничения методов GET и DELETE, а также предлагает альтернативные способы формирования запросов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.