我从Web服务器获取数据:

data := '
HTTP/1.1 200 OK
Content-Encoding: gzip
Vary: Accept-Encoding
Content-type: text/html
Transfer-Encoding: chunked
Server: Apache

3d5
????????????????????????????????????
????????????????????????????????????
????????????????????????????????????
';

数据大小为:3d5(十六进制)
全部存储到tidbytes变量“data”。
如何解码gziped数据,更改其中的内容,然后重新编码并将长度3d5编辑为new。

最佳答案

Transfer-Encoding响应头设置为chunked。这意味着服务器以块的形式发送正文数据,其中每个块表示其自身的大小,其中0长度的块表示数据的结尾。3d5表示第一个块的大小。只有当响应中只有一个数据块时,这才是HTML的完整大小。
TIdHTTP内部为您处理分块数据。如果解块的数据已被gzip压缩,TIdHTTP可以为您解压,如果您事先将TIdZLibCompressorBase派生组件(如TIdCompressorZLib)分配给TIdHTTP.Compressor属性。

10-02 01:41