Difference between revisions of "IPConnection.HTTPDecodeChunked"
1>Admin |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 11:09, 13 March 2022
| HTTPDecodeChunked (Работа с HTTP-пакетами 1.1) | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Функция выполняет соединение тела полученного пакета, если он был фрагментирован при потоковой передаче (метод передачи 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;