1
 require 'net/http' 
 1.upto(99) do |novel|
    puts "Downloading ##{novel}..."
    Net::HTTP.start("http://www.nbc.com") do |http|
      resp = http.get("/heroes/novels/downloads/Heroes_novel_0#{novel}.pdf")
      open("Heroes_novel_#{novel}.pdf", "w") do |file|
        file.write(resp.body)
      end
    end
    puts "Next..."
    puts
 end
puts "Okay, Sneak it's done!"

当我运行我的脚本时,我得到了这些错误:

C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in initialize': getaddrinfo: No such host is known. (SocketError) from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:inopen' 来自 C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in block in connect' from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:44:intimeout' 来自C:/Ruby192/lib/ruby/1.9.1/timeout.rb:89:in timeout' from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:inconnect' from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:637:in do_start' from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:626:instart' from C: /Ruby192/lib/ruby/1.9.1/net/http.rb:490:in start' from heroes.rb:5:inblock in ' from heros.rb:3:in upto' from heroes.rb:3:in'

4

1 回答 1

4

您需要将正确的参数解析为start(). 它需要一个主机和一个端口。最简单的方法是首先创建一个 URI 对象。

uri = URI('http://www.nbc.com')
Net::HTTP.start(uri.host, uri.port) do |http|
  #do some get requests and handle it
end

这转化为Net::HTTP.start("www.nbc.com", 80)

于 2012-05-08T01:03:16.513 回答