打开(" http://www.google.com')失败但wget有效

时间:2010-11-14 12:06:43

标签: ruby wget open-uri

打开失败:

irb(main):001:0> require 'open-uri'
=> true
irb(main):002:0> open("http://www.google.com")
RuntimeError: Non-HTTP proxy URI: 
    from /usr/lib/ruby/1.8/open-uri.rb:203:in `open_http'
    from /usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
    from /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
    from /usr/lib/ruby/1.8/open-uri.rb:162:in `catch'
    from /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
    from /usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
    from /usr/lib/ruby/1.8/open-uri.rb:518:in `open'
    from /usr/lib/ruby/1.8/open-uri.rb:30:in `open'
    from (irb):2

但是,wget()有效......

root@pierr-desktop:/work/web/yy# wget www.google.com
--2010-11-14 20:00:39--  http://www.google.com/
Resolving www.google.com... 72.14.203.104, 72.14.203.99
Connecting to www.google.com|72.14.203.104|:80... connected.
HTTP request sent, awaiting response... 302 Found
......... 

2010-11-14 20:00:40 (47.7 KB/s) - `index.html' saved [9097]

我是否必须设置代理,但我不知道正确的代理信息..

2 个答案:

答案 0 :(得分:5)

Open-URI从环境中选择代理(如果已设置),或者您可以在打开连接时定义代理,或者如果在环境中设置了代理,则禁用代理:

# 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|
  # ...
}

See Open-URI Documentation

此外,您的Ruby看起来很旧:/usr/lib/ruby/1.8/。做ruby -v如果不是至少1.8.7我建议安装RVM,然后用它来安装当前的Ruby(1.9.2)或至少最新的1.8版本(1.8.7) )。查看RVM Prerequisites页面,然后点击installation directions,包括有关修改帐户启动脚本的部分,然后阅读有关安装Ruby gems的部分。

我不建议通过yum或apt使用打包的Ruby。它们不会是最新的,似乎缺少我们期望从库存Ruby源安装的所有生物舒适。 RVM使所以易于安装和管理多个红宝石。

答案 1 :(得分:1)

如果您为系统定义了代理设置,则可以使用以下方法进行检查:

1-检查文件/etc/wgetrc以查找http_proxy配置参数:

2-使用:echo $HTTP_PROXY

检查环境变量