Extended maintenance of Ruby versions 1.8.7 and 1.9.2 will end on July 31, 2014. Read more

In Files

  • open-uri.rb

OpenURI

OpenURI is an easy-to-use wrapper for net/http, net/https and net/ftp.

Example

It is possible to open http/https/ftp URL as usual like opening a file:

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

The opened file has several methods for meta information as follows since
it is extended by OpenURI::Meta.

  open("http://www.ruby-lang.org/en") {|f|
    f.each_line {|line| p line}
    p f.base_uri         # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/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
  }

Additional header fields can be specified by an optional hash argument.

  open("http://www.ruby-lang.org/en/",
    "User-Agent" => "Ruby/#{RUBY_VERSION}",
    "From" => "foo@bar.invalid",
    "Referer" => "http://www.ruby-lang.org/") {|f|
    # ...
  }

The environment variables such as http_proxy, https_proxy and ftp_proxy
are in effect by default.  :proxy => nil disables proxy.

  open("http://www.ruby-lang.org/en/raa.html", :proxy => nil) {|f|
    # ...
  }

URI objects can be opened in a similar way.

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

URI objects can be read directly. The returned string is also extended by
OpenURI::Meta.

  str = uri.read
  p str.base_uri

Author:: Tanaka Akira <akr@m17n.org>

Constants

Options

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus