我需要幫助解壓來自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