Faraday: 获取请求时的 Zlib::DataError

创建于 2012-02-16  ·  9评论  ·  资料来源: lostisland/faraday

我看到几个 url 在请求时会导致错误“Zlib::DataError: unknown compression method”

/faraday/adapter/net_http.rb:59:in call' /faraday/request/url_encoded.rb:14:in call'
/faraday/connection.rb:215:in run_request' /faraday/connection.rb:88:in get'
/faraday-a1c2dcf1c5c0/lib/faraday.rb:24:in `method_missing'

例子:
Faraday.get('http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx')

我在 Ruby 1.9.3 上测试了 0.7.6 和 0.8.RC2。

我还在同一个 url 上测试了 HTTParty,它似乎可以工作......但我没有进一步挖掘。

谢谢,
斯科特

最有用的评论

服务器正在使用不受支持的压缩方法发送响应。 好像是服务器的错。

您可以尝试通过设置请求标头来解决它:

“接受编码” => “无”

不确定这是否可行。 您还可以使用其他适配器,例如 Typhoeus。

所有9条评论

查看 net_http.rb 上的源代码并将其与 HTTParty 进行比较:

  • Faraday 使用 .get 并附上关于使用 get 而不是 request 的评论,因为 Ruby 1.9 处理 gzip。
  • HTTParty 正在使用 .get 并自行处理压缩/放气。

看起来这个错误实际上是在 Ruby 中。 这是一个更干净的示例:

需要“网络/https”

url = " http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx "
uri = URI.parse(url)

http = Net::HTTP.new(uri.host, uri.port)
请求 = Net::HTTP::Get.new(uri.request_uri)

http.request(request).code #ok
http.get(request).code #fails

Net::HTTP#get并不意味着接收请求对象,它需要一个路径和(可选)标头。 然后它建立自己的请求。 请参阅http://rubydoc.info/stdlib/net/1.9.2/Net/HTTP#get -instance_method

服务器正在使用不受支持的压缩方法发送响应。 好像是服务器的错。

您可以尝试通过设置请求标头来解决它:

“接受编码” => “无”

不确定这是否可行。 您还可以使用其他适配器,例如 Typhoeus。

这是一个红宝石错误。

url = "http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx"
uri = URI.parse(url)

Net::HTTP.start(uri.host, uri.port) do |http|
  response = http.get(uri.request_uri)
  p response.body[0,100]
end

得到:

net/http.rb:1035:in `inflate': unknown compression method (Zlib::DataError)

@mislav设置 "accept-encoding" => "none" 修复了我正在解决的 zlib 错误。 谢谢。

对不起,如果这很明显,但我该怎么做呢?

@roryc89构建连接对象时:

Faraday.new headers: { accept_encoding: 'none' } do |conn|
  # ...
end

或按请求:

conn.get '/foo/bar' do |req|
  req.headers[:accept_encoding] = 'none'
end

@mislav setting "accept-encoding" => "none" 也为我修复了 zlib 错误,谢谢! 👍

这对我也有用,谢谢大家!!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

amrrbakry picture amrrbakry  ·  4评论

jordansissel picture jordansissel  ·  5评论

aleksb86 picture aleksb86  ·  3评论

JasonBarnabe picture JasonBarnabe  ·  4评论

luizkowalski picture luizkowalski  ·  3评论