如何在Ruby中通过相同的请求获取两个URL?

时间:2013-08-13 08:17:33

标签: ruby request

我希望使用相同的请求获取'a.com/a.html'和'a.com/b.html'的内容 我的代码是

uri = URI.parse("http://www.sample.com/sample1.html")  
http = Net::HTTP.new(uri.host, uri.port)  
request = Net::HTTP::Get.new(uri.request_uri)  
# request.initialize_http_header({"User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X     10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"}) 
result = http.request(request).body

我应该更改请求的路径吗?还是其他任何想法?

1 个答案:

答案 0 :(得分:0)

您无法一次获取多个资源,但您可以重复使用HTTP连接从同一服务器获取多个资源(一个接一个):

require 'net/http'

Net::HTTP.start('a.com') do |http|
  result_a = http.get('/a.html').body
  result_b = http.get('/b.html').body
end

来自docs

  

::start立即创建与HTTP服务器的连接,该服务器在块的持续时间内保持打开状态。如果服务器指示它支持持久连接,则连接将对块中的多个请求保持打开状态。