1

数据来自这里,我用 tcp socket 来获取。

响应如下:

HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Tue, 06 Aug 2013 08:25:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
Content-Encoding: gzip

2e2
?

然后我使用 zlib 函数“解压缩”解压缩,但得到一个 Z_DATA_ERROR 返回的代码。看起来数据开始位置“2e2”不是经过验证的 gzip 流数据?

4

1 回答 1

1

传输编码是分块的。每个数据块前面都有以十六进制指定的块大小,后跟一个行终止符。然后,应该为内容读入那么多字节。块数据后跟另一个行终止符。下一个块具有相同的格式(大小后跟数据),直到发送一个 0 大小的块。

您需要解码每个块并将其附加到解压缩缓冲区。将块大小留在数据流中不会被视为有效输入zlib

于 2013-08-06T08:38:08.990 回答