以下代码适用于Ruby 1.9.3p-551
require "open-uri"
res = open("http://demo.imqs.co.za/version").read
p res => {"buildNumber": 2496, "buildDate": "2015-09-29 11:18:02 +0200", "timestamp": 1443639212 }
在任何高于1.9.3的Ruby版本中,我都会收到以下错误;
from /Users/imac/.rbenv/versions/2.1.0/lib/ruby/2.1.0/net/http/response.rb:357:in `finish': incorrect header check (Zlib::DataError)
我需要使用更高版本,因为这将在Rails 4应用程序中使用。 任何替代品的想法?
答案 0 :(得分:1)
默认情况下不接受gzip编码。或者至少那是我猜的。 以下作品。
res = open("http://demo.imqs.co.za/version", "Accept-Encoding" => "plain").read
有趣的是这是如何从Ruby 2.0.0 +
改变的答案 1 :(得分:1)
另一个巧妙的解决方案。
require 'rest-client'
url = "http://demo.imqs.co.za/version"
def get_response(url)
begin
return RestClient.get(url, {:accept => :json})
rescue RestClient::GatewayTimeout
"GatewayTimeout"
rescue RestClient::RequestTimeout
"RequestTimeout"
rescue SocketError
"SocketError"
end
end
p get_response(url)
# => "{\"buildNumber\": 2535, \"buildDate\": \"2015-09-30 17:41:42 +0200\", \"timestamp\": 1444085042 }"