模块 OpenURI

OpenURI 是一个易于使用的 Net::HTTP、Net::HTTPS 和 Net::FTP 的包装器。

示例

可以像打开文件一样打开 http、https 或 ftp URL

URI.open("https://www.ruby-lang.org.cn/") {|f|
  f.each_line {|line| p line}
}

打开的文件具有几个用于其元信息的 getter 方法,如下所示,因为它由 OpenURI::Meta 扩展。

URI.open("https://www.ruby-lang.org.cn/en") {|f|
  f.each_line {|line| p line}
  p f.base_uri         # <URI::HTTP:0x40e6ef2 URL:https://www.ruby-lang.org.cn/en/>
  p f.content_type     # "text/html"
  p f.charset          # "iso-8859-1"
  p f.content_encoding # []
  p f.last_modified    # Thu Dec 05 02:45:02 UTC 2002
}

可以通过可选的哈希参数指定额外的标头字段。

URI.open("https://www.ruby-lang.org.cn/en/",
  "User-Agent" => "Ruby/#{RUBY_VERSION}",
  "From" => "[email protected]",
  "Referer" => "https://www.ruby-lang.org.cn/") {|f|
  # ...
}

默认情况下,http_proxy、https_proxy 和 ftp_proxy 等环境变量有效。这里我们禁用代理

URI.open("https://www.ruby-lang.org.cn/en/", :proxy => nil) {|f|
  # ...
}

有关可用选项的更多信息,请参见 OpenURI::OpenRead.openURI.open

URI 对象可以以类似的方式打开。

uri = URI.parse("https://www.ruby-lang.org.cn/en/")
uri.open {|f|
  # ...
}

URI 对象可以直接读取。返回的字符串也由 OpenURI::Meta 扩展。

str = uri.read
p str.base_uri
作者

Tanaka Akira <[email protected]>

常量

选项
版本