2010-08-16 28 views
2

我試過在不同網絡上的幾臺機器上運行,所有運行ruby 1.8.7,並且在等待很長時間後得到相同的結果。在HTTPS URL上調用Net :: HTTP.get時,Ruby拋出Timeout :: Error錯誤

Net::HTTP.get(URI.parse('https://encrypted.google.com/')) 
    Timeout::Error: execution expired 

但HTTP工作正常

Net::HTTP.get(URI.parse('http://www.google.com/')) 

的inital超時後,我得到一個EOFError代替

EOFError: end of file reached 

這真的讓我難住了。如果您有任何想法,或者如果您得到相同的結果,我可以告訴我,我真的很感激它。

回答

4

我想你需要USE_SSL設置爲true ...

例如:

uri = URI.parse("https://www.google.com/") 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 

request = Net::HTTP::Get.new(uri.request_uri) 

response = http.request(request) 

puts response.body 

這是從下面的Ruby內部post蠶食。

+0

謝謝Brian!這正是我需要知道的。看到Net :: HTTP對於一個簡單的url_exists有多複雜?打電話我想我會採取Ruby Inside的建議,並與 HTTParty,因爲它給了我相同的結果,更少的麻煩。 (https://encrypted.google.com).response.is_a?(Net :: HTTPSuccess) – aNoble 2010-08-17 00:05:04

+0

我認爲這是個好主意...... HTTParty使http操作更容易處理 - 儘管有點沉重,因爲它需要幾個外部寶石(例如有源支持)。 – Brian 2010-08-17 02:28:46

相關問題