避免在 ruby 中的 if 条件下打印响应 '200'

avoid to print response '200' the if conditions in ruby

我还在学习ruby,我的代码似乎有问题我无法弄清楚

require 'net/http'

File.open("html.txt", "r") do |file_handle|
  file_handle.each_line do |server|
    uri = URI( server )
    res = Net::HTTP.get_response(uri) 
    if res.code != 200
        puts " #{uri} => #{res.code}"
    end
  end
end

html.txt

http://whosebug.com
http://google.com
http://facebook.com
http://serverfault.com
http://twitter.com

我不想打印出响应为“200”的 URI

但现在打印的是:

 http://whosebug.com => 200
 http://google.com => 302
 http://facebook.com => 302
 http://serverfault.com => 200
 http://twitter.com => 301

这是我的预期输出:

 http://google.com => 302
 http://facebook.com => 302
 http://twitter.com => 301

谁能帮我解决这个问题..?提前致谢。

响应代码是一个字符串。

您应该使用条件 res.code != '200',注意引号。

您的代码应如下所示:

require 'net/http'

File.open("html.txt", "r") do |file_handle|
  file_handle.each_line do |server|
    uri = URI( server )
    res = Net::HTTP.get_response(uri)
    if res.code != '200'
        puts " #{uri} => #{res.code}"
    end
  end
end