ストリームAPIからのチャンクデータを解凍するのに助けが必要です。私はgzip圧縮を使用してjson出力を返すGnipストリームapiに接続しています。出力データを圧縮解除しようとすると、次のエラー「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'ed出力が最初のチャンクにはないことを知っています。 これで、gzipされた出力のすべての必要なチャンクを収集し、必要な単一のjson出力を得るためにそれらを圧縮解除するにはどうすればよいですか?
ありがとうございました。 Veeraa。
'Zlib :: Inflate.new'の' window_bits'パラメータはzlibに直接渡されるので、zlibの 'windowBits'と全く同じ意味を持ちます。だから私は31(最大ウィンドウサイズとgzip)または47(自動検出で最大ウィンドウサイズ)の値を試してみましょう。 – L2G