2010-08-16 70 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

相关问题