数据来自here,我使用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函数“uncompress”,但得到了一个Z_DATA_ERROR返回的代码。看起来数据开始位置“2e2”不是验证gzip流数据吗?
答案 0 :(得分:1)
传输编码被分块。每个数据块前面都有以十六进制指定的块大小,后跟行终止符。然后,应该读入内容的那么多字节。块数据后跟另一个行终止符。下一个块具有相同的格式(大小后跟数据),直到发送0大小的块。
您需要解码每个块并将其附加到解压缩缓冲区。保留数据流中的块大小不会被zlib
视为有效输入。