我需要从流 api 解压缩块数据的帮助。我正在连接到使用 gzip 压缩返回 json 输出的 Gnip 流 api。当我尝试解压缩输出数据时,它会抛出以下错误“Zlib::DataError:不正确的标头检查”。
它可能非常接近这个问题 - 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 输出。
提前致谢。维拉。