waz*_*123 2 delphi gzip http indy
我从网络服务器获取数据:
data := '
HTTP/1.1 200 OK
Content-Encoding: gzip
Vary: Accept-Encoding
Content-type: text/html
Transfer-Encoding: chunked
Server: Apache
3d5
????????????????????????????????????
????????????????????????????????????
????????????????????????????????????
';
Run Code Online (Sandbox Code Playgroud)
数据大小为:3d5(十六进制)全部存储到TIdBytes变量"data".
如何解码gziped数据,更改其中的内容,然后编码并将长度3d5编辑为新的.
该Transfer-Encoding响应首部设置为chunked.这意味着服务器以块的形式发送正文数据,其中每个块指示其自己的大小,其中0长度的块指示数据的结束.该3d5指第一个块的大小.只有在响应中只有1个数据块时,这才是HTML的完整大小.
TIdHTTP内部处理分块数据.如果TIdHTTP解压缩的数据已被gzip'ped,如果您事先为属性分配了一个TIdZLibCompressorBase派生的组件,可以为您解压缩.TIdCompressorZLibTIdHTTP.Compressor