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

时间:2016-04-28 11:49:44

标签: ruby http httpresponse

我还在学习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://stackoverflow.com
http://google.com
http://facebook.com
http://serverfault.com
http://twitter.com

我不想打印出响应'200'

的URI

但是现在这就是印刷品:

 http://stackoverflow.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

任何人都可以帮我这个..?提前谢谢。

1 个答案:

答案 0 :(得分:3)

响应代码是一个字符串。

您应该使用条件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