我用SPI截获网页数据包,有很多使用了GZIP编码,我用了ZLIB来解压缩,但是必须把整个网页数据全部接收完成后保存为文件,然后用gzOpen打开来解,如果我直接用uncompress来解压缩单个接收的数据包时就会出现输入数据出错(Z_DATA_ERROR).    本来我以为GZIP格式必须接收所有的数据才能解压缩,但是我发现IE在浏览这样的网站时可以边下载数据边显示,在我的SPI中也可以看到这一点:后面的包我还没有返回,IE已经把前面接收到的数据显示出来了,请问,有没有一种算法可以实现象IE这样边下载边解压缩的?

解决方案 »

  1.   

    我使用 zlib 进行内存解压时没有出现过这种情况
    IE 的处理与GZIP无关,因为并非所有数据都压缩在一个包中
      

  2.   

    实际上是很多个 GZIP 包
      

  3.   

    UnCompress的用法是不是没弄对啊
      

  4.   

    我做过这样一个试验:先用compress压缩一个字符串,然后再用uncompress解压缩可以通过如果我直接把IE下载的数据包的压缩数据送到uncompress则失败,而且我查看了IE的数据包起始字符是:
    1F 8B 08 00 00 00 00 00,这是gzip压缩的文件头数据,而我直接用compress压缩的数据起始字符就不是这样,如果我用gzfile来压缩到文件,起始字符就和IE下载的相同.