我有一个网址列表,我需要检查以下网址中哪些是有效的。我用的密码是
require 'net/http' url = 'http://mysite.com' res = Net::HTTP.get_response(URI.parse(url.to_s)) puts res.code
这里我可以检查响应代码200是否是有效的url。我担心返回的“res”对象包含代码、主体等。所以我的响应(res对象)变得很重。有没有什么方法可以让我只得到响应代码。我不需要任何其他信息。请帮助
qvtsj1bj1#
我没有检查是否可以使用Net::HTTP,但是可以使用Curb,它是curl的Ruby Package 器。对于Net::HTTP,您还可以使用HTTP#head,它使用HEAD方法从服务器请求标头。有关HTTP的方法HEAD的信息:9.4头部HEAD方法与GET方法相同,只是服务器在响应中“不得”返回消息体。包含在HTTP头中的元信息在响应HEAD请求时“应”与响应GET请求时发送的信息相同。此方法可用于获取请求所隐含的实体的元信息,而无需传输实体体本身。此方法通常用于测试超文本链接的有效性、可访问性和最近修改。
HTTP#head
2j4z5cfb2#
这在Faraday中最简单:
# one line to make request response = Faraday.head url # example with headers resource_size = response.headers['Content-Length']
bmp9r5qi3#
我使用的代码是:
require 'net/http' response = nil Net::HTTP.start('upload.wikimedia.org', 80) {|http| response = http.head(path) } puts response.code
1cosmwyk4#
HEAD请求可能如下所示:
require 'socket' s = TCPSocket.open("google.com", 80) s.puts "HEAD / HTTP/1.1" s.puts "Host: google.com" s.puts headline = s.gets s.close status = headline.scan(/\d\d\d/).first.to_i
qacovj5a5#
require "uri" uri = URI my_url require "net/http" p Net::HTTP.start(URI(url).host, 443, use_ssl: true){ |http| break http.head uri.path }
5条答案
按热度按时间qvtsj1bj1#
我没有检查是否可以使用Net::HTTP,但是可以使用Curb,它是curl的Ruby Package 器。
对于Net::HTTP,您还可以使用
HTTP#head
,它使用HEAD方法从服务器请求标头。有关HTTP的方法HEAD的信息:
9.4头部
HEAD方法与GET方法相同,只是服务器在响应中“不得”返回消息体。包含在HTTP头中的元信息在响应HEAD请求时“应”与响应GET请求时发送的信息相同。此方法可用于获取请求所隐含的实体的元信息,而无需传输实体体本身。此方法通常用于测试超文本链接的有效性、可访问性和最近修改。
2j4z5cfb2#
这在Faraday中最简单:
bmp9r5qi3#
我使用的代码是:
1cosmwyk4#
HEAD请求可能如下所示:
qacovj5a5#