论坛首页 编程语言技术论坛

Ruby的OpenURI模块

浏览 2340 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-11  

Ruby中获取一个HTTP/FTP地址的内容,有一个非常方便的方法,就是使用open-uri库。

 

open-uri库是ruby的标准附加库中所带的,引用了该附加库后,就可以像打开普通文件那样打开一个http/ftp的uri的资源。

 

有区别的地方在这里:

 

require 'open-uri'

open('d:/test.txt'){|file|
  puts file.class  => #File
}

open('http://www.xuexi6.com'){|file|
  puts file.class  => #Tempfile
}

 

可以看出,打开一个本机文件返回的是File类型,而打开一个uri返回的是一个Tempfile类型。

 

还有一点要注意,就是open-uri里面的open方法会自动对302 redirection重定向地址进行追踪访问,而Net::HTTP#get方法则不会自动追踪302重定向地址。

 

该函数最后返回的值,是传入的代码块最后的值。 可以这样获得uri的内容

 

data = open('http://www.xuexi6.com'){|f| f.read}

data = open('http://www.xuexi6.com'){|f| f}.open.read

 

第二句中open的原因是:open方法返回的流,是已经关闭了的tempfile,所以要先打开流,返回打开的流,再调用read读取。

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics