首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zlib解压缩抛出标题错误- Ruby

Zlib解压缩抛出标题错误- Ruby
EN

Stack Overflow用户
提问于 2012-02-09 21:35:22
回答 1查看 2.3K关注 0票数 2

我需要帮助从流api解压块数据。我连接到Gnip stream api,它使用gzip压缩返回json输出。当我尝试解压缩输出数据时,它抛出以下错误:"Zlib::DataError: it check“。

它可能非常接近这个问题-- http://groups.google.com/group/nodejs/browse_thread/thread/32b9ee7f691a68d9

这里我附上了我的代码片段供您参考:

代码语言:javascript
复制
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输出。

提前谢谢。维拉。

EN

回答 1

Stack Overflow用户

发布于 2012-02-09 23:47:38

默认情况下,zlib查找的是zlib头,而不是gzip头。因此gzip报头会导致不正确的报头检查。我不知道zlib的Ruby接口是什么样的,但您应该看看是否可以指定要膨胀的流的类型。zlib的inflate支持zlib、gzip和原始deflate流。它还可选地提供zlib和gzip流的自动检测。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9211830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档