2012-10-22 63 views
2

我知道一些語言有一個庫,它允許您獲取404或500消息的HTTP內容。獲取404錯誤頁面響應的內容ruby

是否有一個允許Ruby的庫?

我試過open-uri,但它只是返回一個HTTPError異常,沒有404響應的HTML內容。

回答

6

這似乎沒有在文檔中清楚說明,但HttpError有一個io屬性,就我所知,您可以將其視爲只讀文件。

require 'open-uri' 

begin 
    response = open('http://google.com/blahblah') 
rescue => e 
    puts e # Error message 
    puts e.io.status # Http Error code 
    puts e.io.readlines # Http response body 
end 
+0

甜美!正是我所期待的。我希望他們將這個包含在文檔中。我在那裏檢查,沒有找到這個信息(沒有找到狀態和代碼壽的信息) – leeroid

4

Net::HTTP支持你所需要的。

您可以使用request_get方法,無論狀態碼如何,它都會返回一個響應。

從腳本/控制檯:

> http = Net::HTTP.new('localhost', 3000) 
=> #<Net::HTTP localhost:3000 open=false> 
> resp = http.request_get('/foo') # a page that doesn't exist 
=> #<Net::HTTPNotFound 404 Not Found readbody=true> 
> resp.code 
=> "404" 
> resp.body 
=> "<html>...</html>" 

(如果磁帶庫不提供給你默認,你可以做一個require 'net/http'

+0

甜。謝謝尼克!看起來Open-uri是Net :: HTTP的一個包裝,使事情變得更簡單。真的很感謝幫助。 – leeroid