我需要帮助解压来自api的块数据。我连接到Gnip流api,它使用gzip压缩来返回json输出。当我尝试解压缩输出数据时,它会引发以下错误“Zlib :: DataError:不正确的标题检查”。Zlib解压缩抛出头错误 - Ruby
这可能是非常接近这个问题 - http://groups.google.com/group/nodejs/browse_thread/thread/32b9ee7f691a68d9
在这里,我附上我的代码片段供大家参考:
require 'rubygems'
require 'curl'
require 'stringio'
require 'zlib'
url = "https://stream.gnip.com:443/accounts/SomeGroup/publishers/twitter/streams/track/Prod.json"
crl = Curl::Easy.new(url)
crl.headers={"Authorization"=>"Basic dmVlcmFzd5kYXJhdmVsLRoaX1Z25hbmFzd5kYhbU4ZXJeC5b26GpbFnW0MzIy", "Accept-Encoding" => "deflate, gzip"}
zstream = Zlib::Inflate.new
crl.on_body { |data| zstream.inflate(data);}
crl.http_get
上面的代码总是返回“的Zlib :: DataError:不正确头检查” 。我知道gnip按块返回数据块,因此所需的gzip输出不会在第一个块中。 那么我怎样才能收集所有需要的gzip输出块并解压缩才能得到所需的单个json输出。
在此先感谢。 Veeraa。
它看起来像'Zlib :: Inflate.new'的'window_bits'参数直接传递给zlib,因此它与zlib中的'windowBits'具有完全相同的含义。所以我会尝试31(最大窗口大小和gzip)或47(自动检测最大窗口大小)的值。 – L2G 2014-03-07 00:54:01