IPConnection.HTTPDecodeChunked

From SunFlurry wiki
Jump to: navigation, search
  HTTPDecodeChunked (Работа с HTTP-пакетами 1.1)
Объект:Объект IP
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

Функция выполняет соединение тела полученного пакета, если он был фрагментирован при потоковой передаче (метод передачи chunked). Перед работой функция проверяет, имеется ли в заголовке поле Transfer-Encoding, и присутствует ли в нем значение chunked. Если оба условия выполняются, функция выполняет расшифровку (удаление служебной информации) тела запроса. Обновленное тело запроса записывается на место оригинального тела, если в служебной информации присутствовали дополнительные поля заголовка, они будут добавлены к заголовку, значение chunked будет удалено из поля Transfer-Encoding (само поле будет удалено из заголовка, если оно не содержало больше никаких значений). Для дополнительной информации, см. описание поля Transfer-Encoding (к примеру, на MDN).

Синтаксис

IPConnection.HTTPDecodeChunked()

Примеры

aTCP:=IPConnection.Connect("www.google.com:80");
//Метод потоковой фрагментации доступен только для протокола версии 1.1
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");
aTCP.HTTPSetHeaderField("Connection","Close");
If aTCP.HTTPSendAndReceive Then
  //Если получен пакет с потоковой фрагментацией, он будет расшифрован, если кодировка обычная, он не будет изменен.
  aTCP.HTTPDecodeChunked();
  Стр:=aTCP.HTTPBodyAsString;
  If aTCP.HTTPGetHeaderField("Content-Encoding")="gzip" Then
    Стр:=IPConnection.HTTPDecompress(Стр);
  EndIf;
  Message("Полученная строка: "+Стр);
EndIf;