我需要帮助从流api解压块数据。我连接到Gnip stream api,它使用gzip压缩返回json输出。当我尝试解压缩输出数据时,它抛出以下错误:"Zlib::DataError: it check“。
它可能非常接近这个问题-- 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: incorrect check“。我知道gnip逐个返回数据块,所以所需的gzip输出不会在第一个块中。那么,如何收集所有需要的gzip输出块并解压缩它们,以获得所需的单个json输出。
提前谢谢。维拉。
发布于 2012-02-09 23:47:38
默认情况下,zlib查找的是zlib头,而不是gzip头。因此gzip报头会导致不正确的报头检查。我不知道zlib的Ruby接口是什么样的,但您应该看看是否可以指定要膨胀的流的类型。zlib的inflate支持zlib、gzip和原始deflate流。它还可选地提供zlib和gzip流的自动检测。
https://stackoverflow.com/questions/9211830
复制相似问题