2011-07-26 65 views
1

當我在控制器內運行以下代碼時,出現錯誤'SystemStackError(堆棧級別太深)',但它在ruby終端內部工作良好!Net :: HTTP - >堆棧級別太深

require 'net/http' 
require 'net/https' 
http = Net::HTTP.new('my.site.com', 443) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE  
resp, data = http.get('/something?info=XX') 

據我可以找出它導致問題的最後一行。希望有人遇到過這個問題!我在一臺Windows機器上,如果這是相關的。

更新:粘貼的代碼可以在我們的fedora服務器上工作,但這樣開發肯定沒有樂趣。

回答

0

你應該試試這個代碼,而不是:

require 'uri' 
require 'net/https' 
url = URI("https://foo.bar.com") 
req = Net::HTTP::Get.new(url.to_s) 
res = Net::HTTP.start(url.hostname, url.port, :use_ssl => true , :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| 
    http.request(req) 
end 
case res 
    when Net::HTTPSuccess, Net::HTTPRedirection 
     response = Rack::Utils.parse_nested_query URI.decode(res.body) 
     puts response.to_json 
    else 
     puts 'OH NO!' 
     puts res.to_json 
    end