如何仅从Ruby中的HTTP请求获取响应代码

Ama*_*r S 11 ruby http httpresponse httpwebrequest http-headers

我有一个网址列表,我需要检查以下哪个网址是有效的.

我用的代码是

require 'net/http'

url = 'http://mysite.com'
res = Net::HTTP.get_response(URI.parse(url.to_s))
puts res.code
Run Code Online (Sandbox Code Playgroud)

在这里,我可以检查响应代码200是否有效的网址.我关心的是返回的'res'对象包含代码,正文等.所以我的响应(res对象)变得很重.有什么方法可以让我只得到响应代码.我不需要任何其他信息.请帮忙

Ale*_*kin 9

我没有检查是否可以使用Net :: HTTP,但你可以使用Curb,它是curl的Ruby包装器.看着Curl::Easy#http_head

使用Net :: HTTP,您也可以使用HTTP#head,它使用HEAD方法从服务器请求标头.

有关HTTP方法的信息HEAD:

9.4头

HEAD方法与GET相同,只是服务器不能在响应中返回消息体.响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求时发送的信息相同.该方法可用于获得关于请求所暗示的实体的元信息,而无需转移实体主体本身.此方法通常用于测试超文本链接的有效性,可访问性和最近的修改.

要获取页面的响应代码:

require 'net/http'
response = nil
Net::HTTP.start('www.example.com', 80) {|http|
  response = http.head('/page.html')
}
puts response.code
Run Code Online (Sandbox Code Playgroud)


Tur*_*adg 7

这在法拉第最简单:

# one line to make request
response = Faraday.head url

# example with headers
resource_size = response.headers['Content-Length']
Run Code Online (Sandbox Code Playgroud)


Ama*_*r S 5

我使用的代码是:

response = nil
Net::HTTP.start('upload.wikimedia.org', 80) {|http|
 response = http.head(url)
}
puts response.code
Run Code Online (Sandbox Code Playgroud)