IPConnection.HTTPDecompress
| HTTPDecompress (Работа со сжатыми HTTP-пакетами) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция выполняет декомпрессию информации, обычно полученной из тела HTTP-пакета. При обмене сжатыми пакетами, обычно используется алгоритм gzip. Для иницииации компрессии в заголовке исходящего пакета необходимо указать Accept-Encoding: gzip (для алгоритма сжатия gzip). Функция может использоваться не только для информации, полученной по HTTP, но и для произвольной информации, единственным ограничением может служить факт, что функция не отдает имени файла, которое иногда записывается в архив (при передаче по http такое имя отсутствует). Функция может быть вызвана непосредственно из интерфейса.
Синтаксис
IPConnection.HTTPDecompress(<Строка или буфер для декомпрессии (STRING,BUFFER)>,<Алгоритм компрессии (INT)>=0):<Результат декомпрессии (STRING,BUFFER)>
Аргументы
<Строка или буфер для декомпрессии (STRING,BUFFER)>- ANSI-строка или буфер для декомпрессии. Если аргументом является строка, результат будет возвращен, как строка, если аргументом является буфер, результат будет возвращен как буфер.<Алгоритм компрессии (INT)>- (необязательный аргумент) Аргумент задает алгоритм компрессии. На данный момент принимаются значения:- 0 -- алгоритм gzip (являющийся оберткой компрессии zlib)
- 1 -- алгоритм deflate (компрессия с заголовкой zlib)
Возвращаемое значение
Возвращается строку или буфер в зависимости от типа первого аргумента.
Примеры
aTCP:=IPConnection.Connect("www.google.com:80");
aTCP.HTTPSetOperation("GET / HTTP/1.1");
aTCP.HTTPSetHeaderField("Host","www.google.com");
aTCP.HTTPSetHeaderField("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
aTCP.HTTPSetHeaderField("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
aTCP.HTTPSetHeaderField("Accept-Language","en");
aTCP.HTTPSetHeaderField("Accept-Encoding","gzip,deflate");
aTCP.HTTPSetHeaderField("Connection","Close");
If aTCP.HTTPSendAndReceive Then
aTCP.HTTPDecodeChunked();
Стр:=aTCP.HTTPBodyAsString;
аТип:=aTCP.HTTPGetHeaderField("Content-Encoding");
аТип:=?(аТип="gzip",0,?(аТип="deflate",1,-1));
If аТип>=0 Then
Стр:=IPConnection.HTTPDecompress(Стр,аТип);
EndIf;
Message("Полученная строка: "+Стр);
EndIf;