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;