IPConnection.HTTPCompress

From SunFlurry wiki
Revision as of 12:02, 20 March 2021 by 1>Admin (Примеры)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  HTTPCompress (Работа со сжатыми HTTP-пакетами)
Объект:Объект IP
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, число, неверный аргумент, системная ошибка.
Визуальность:Нет

Функция выполняет компрессию информации для отправки в теле HTTP-пакета. Обычно используется алгоритм gzip. При отправке сжатого пакета, в заголовке необходимо указать Content-Encoding: gzip (для алгоритма сжатия gzip). Функция может использоваться не только для информации, полученной по HTTP, но и для произвольной информации, единственным ограничением может служить факт, что в архив, полученный таким образом, не записывается имя файла (архив с пустым именем файла). Функция может быть вызвана непосредственно из интерфейса.

Синтаксис

IPConnection.HTTPCompress(<Строка или буфер для компрессии (STRING,BUFFER)>,<Алгоритм компрессии (INT)>=0,<Уровень компрессии (INT)>=5):<Результат компрессии (STRING,BUFFER)>

Аргументы

  • <Строка или буфер для компрессии (STRING,BUFFER)> - ANSI-строка или буфер для компрессии. Если аргументом является строка, результат будет возвращен, как строка, если аргументом является буфер, результат будет возвращен как буфер.
  • <Алгоритм компрессии (INT)> - (необязательный аргумент) Аргумент задает алгоритм компрессии. На данный момент возможно только значение 0, которое отвечает за алгоритм gzip (являющийся оберткой алгоритма deflate)
  • <Уровень компрессии (INT)> - (необязательный аргумент) Задает уровень компрессии, являющийся числом от 0 (компрессия отсутствует) и 1 (минимальный уровень компрессии) до 9 (максимальный уровень). По умолчанию используется средний уровень 5. Чем выше уровень компрессии, тем медленнее будет работать функция, при этом результат компрессии может занимать чуть немного меньше места.

Возвращаемое значение

Возвращается строку или буфер в зависимости от типа первого аргумента.

Примеры

...
//Стр -- Текст ответа (тело пакета)
Стр:=IPConnection.HTTPCompress(Стр);
аДата:=GMTDate();
TCP.HTTPClear(3);
TCP.HTTPSetOperation("HTTP/1.0 200 OK");
TCP.HTTPSetHeaderField("Date",FormatDate(аДата,"N, DD M YYYY hh:tt:ss ""GMT""","en"));
TCP.HTTPSetHeaderField("Server","SF http server");
TCP.HTTPSetHeaderField("Last-Modified",FormatDate(аДата,"N, DD M YYYY hh:tt:ss ""GMT""","en"));
TCP.HTTPSetHeaderField("Content-Length",Length(Стр));
TCP.HTTPSetHeaderField("Cache-Control","no-store");
TCP.HTTPSetHeaderField("Connection","close");
TCP.HTTPSetHeaderField("Content-Type","text/html; charset=UTF-8");
TCP.HTTPSetHeaderField("Content-Encoding","gzip");
TCP.HTTPSetBody(Стр);
TCP.HTTPSend();