获取404错误页面响应ruby的内容

时间:2012-10-22 22:05:13

标签: ruby nokogiri open-uri

我知道某些语言有一个库,允许您获取404或500消息的HTTP内容。

是否有允许Ruby的库?

我尝试过open-uri但它只是返回一个HTTPError异常而没有404响应的HTML内容。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'

答案 2 :(得分:3)

也适用于HTTParty https://github.com/jnunemaker/httparty

require 'rubygems'
require 'httparty'

HTTParty.get("http://google.com/blahblah").parsed_response

有许多可用的HTTP客户端,请从https://www.ruby-toolbox.com/categories/http_clients

中选择一个