OpenURI is an easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP(OpenURI支持重定向)

  • 像打开普通文件那样打开http/ftp的URL

    open("http://www.ruby-lang.org/") {|f|
    f.each_line {|line| p line}
    }
  • 打开的文件对象已经被OpenURI::Meta所扩展, 您可以方便地获取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
    }
  • 使用哈希表参数,您就可以指定添加的头字段
    open("http://www.ruby-lang.org/en/",
    "User-Agent" => "Ruby/#{RUBY_VERSION}",
    "From" => "foo@bar.invalid",
    "Referer" => "http://www.ruby-lang.org/") {|f|
    ...
    }
  • 在默认情况下,http_proxy以及ftp_proxy这些环境变量都是有效的. 若想禁用代理,可以这样 :proxy => nil
    open("http://www.ruby-lang.org/en/raa.html",
    :proxy => nil) {|f|
    ...
    }
  • URI对象的打开方式也是类似的
    uri = URI.parse("http://www.ruby-lang.org/en/")
    uri.open {|f|
    ...
    }
  • 可以直接读取URI对象。返回的字符串已经被OpenURI::Meta所扩展
    str = uri.read
    p str.base_uri
  • 访问https请求,open-uri + OpenSSL

    open(url, :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE) { |f| ... }

ruby OpenURI模块使用的更多相关文章

  1. Ruby:Open-uri和Net::HTTP的不同

    OpenURI不仅可以用来发起http请求,也可以发起https和ftp请求

  2. ruby 第三方模块unirest使用

    Creating Requests require 'unirest' response = Unirest.post 'http://httpbin.org/post', headers:{ Acc ...

  3. Ruby module ---模块,组件

    module 的主要目的是把不同的方法和常量分别放进不同的命名空间. module 的命名方式跟类一样首字母大写,多个单词不用下划线. 如:CircleArea module 语法 module Mo ...

  4. 雷林鹏分享:Ruby 模块(Module)

    Ruby 模块(Module) 模块(Module)是一种把方法.类和常量组合在一起的方式.模块(Module)为您提供了两大好处. 模块提供了一个命名空间和避免名字冲突. 模块实现了 mixin 装 ...

  5. Ruby:多线程队列(Queue)下载博客文章到本地

    Ruby:多线程下载博客文章到本地的完整代码 #encoding:utf-8 require 'net/http' require 'thread' require 'open-uri' requir ...

  6. Ruby语法基础(二)

    Ruby语法基础(二) 继续ruby的学习,这次主要把目光放到运算符,条件判断,循环,方法,以及其他ruby特有的基本概念上 运算符 算术运算符:+,-,/,%,**,值的注意的是,ruby中一切皆为 ...

  7. 【Ruby】【基础】

    # [Ruby 块]=begin1 块由大量代码构成2 块中代码包含在{}内3 从与其相同名称的函数调用4 可以使用yield语句调用块=enddef test p '在test方法内' yield ...

  8. ruby http爬虫中的 :body 用法问题

    require 'http' url = 'http://localhost/b.php' data = 'whoami=whoami' html = HTTP.via('127.0.0.1',808 ...

  9. 雷林鹏分享:Ruby 数据库访问 - DBI 教程

    Ruby 数据库访问 - DBI 教程 本章节将向您讲解如何使用 Ruby 访问数据库.Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口. DBI 即 ...

随机推荐

  1. Class.forName(),classloader.loadclass用法详解

    为什么要把ClassLoader.loadClass(String name)和Class.forName(String name)进行比较呢,因为他们都能在运行时对任意一个类,都能够知道该类的所有属 ...

  2. 【Leetcode】【Easy】String to Integer (atoi)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  3. (转)sizeof()和_countof()

    (转)sizeof()和_countof()   先看程序: #include <iostream> using namespace std; int main(int argc, cha ...

  4. ZT 父子进程共享文件描述符

    转贴自倒霉熊的博客 [linux学习笔记-2]父子进程共享文件描述符 (2009-03-02 23:03:17) 转载▼ 标签: 学习 linux 子进程 文件描述符 杂谈 分类: 学习 #inclu ...

  5. SAP HANA Hint简介

    我发现Google和百度上关于HANA DB Hint的中文介绍比较少,所以就写了这一篇.本文部分内容来自SAP note 2142945 – FAQ: SAP HANA Hints. 什么是SAP ...

  6. Visual Stuio 2010 常用快捷及操作

    1.如果你想复制一行代码(超级长,鼠标拖老久的),只需要在这行的空白处 CTRL+C 同理,剪贴一行 CTRL+X 删除一行 CTRL+L 2.显示方法里的参数,以前每次都是手动删括号. CTRL+S ...

  7. vue.js--基础 事件结合双向数据绑定实现todolist,增加和删除功能

    原理很简单,写一个input框,定义一个空的list,当在input中增加数据时,就往list中添加数据,然后在循环这个list的数据,删除数据就是调用list中的splice <templat ...

  8. LeetCode: Recover Binary Search Tree [099]

    [题目] Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without cha ...

  9. Black Rock Shooter 题解

    题目描述 在人气动漫 Black Rock shooter 中,当加贺里对麻陶 说出了“滚回去“以后,与此同时,在另一个心灵世界里, BRS 也遭到了敌人的攻击.此时,一共有 n 个攻击排成一行 朝着 ...

  10. JS动态修改微信浏览器中的title

    JS动态修改微信浏览器中的title我们的原理是设置一个ifame然后我们再加载一下就可以实现了,具体的例子如下所示. 平时使用JS修改title,直接document.title=新标题就好了 这样 ...