2009-05-30 105 views

回答

30

使用OpenURI

open("http://...", :http_basic_authentication=>[user, password]) 

访问网站/网页/资源要求HTTP认证。

+12

老实说,如果我看到一个库在内部使用open-uri,我不会使用该库。这是一个深度瑕疵的库,它建立在深层次的URI解析器之上。在IRB中使用它很好,就是这样。 – 2009-06-01 19:30:16

+0

@ Sporkmonger:恩,那就是我们所拥有的 - 你有什么建议,原始的Net :: HTTP? – apostlion 2009-06-02 05:18:51

+7

使用Net :: HTTP或Patron或Curb或其他答案中提到的任何其他库。这个答案如何被投票或接受是超出我的。 – 2009-10-25 03:22:04

33

如果你喜欢它低级别,也有Typhoeus,它建立在Curl :: Multi之上。

5

还有Mechanize,这是一个非常高级别的网页抓取客户端,并使用Nokogiri进行HTML解析。

9

Curb-fu是围绕路沿石的包装又使用的libcurl。 Curb-fu提供什么优于Curb?只是很多语法糖 - 但这通常是你需要的。

4

添加更近的答案,HTTPClient是另一个使用libcurl的Ruby库,它支持并行线程和很多卷曲好东西。我使用HTTPClient和Typhoeus来处理任何不平凡的应用程序。

7

HTTP clients是一个很好的网页,可以帮助您做出有关各种客户的决定。

6

eat创业板是一个 “替代” 的OpenURI:

# first do gem install eat 
require 'eat' 
eat('http://yahoo.com')     #=> String 
eat('/home/seamus/foo.txt')    #=> String 
eat('file:///home/seamus/foo.txt')  #=> String 

它采用HTTPClient引擎盖下。它也有一些选择:

eat('http://yahoo.com', :timeout => 10)     # timeout after 10 seconds 
eat('http://yahoo.com', :limit => 1024)     # only read the first 1024 chars 
eat('https://yahoo.com', :openssl_verify_mode => 'none') # don't bother verifying SSL certificate 
4

这是我写的一个小程序来获取一些文件。

base = "http://media.pragprog.com/titles/ruby3/code/samples/tutthreads_" 

for i in 1..50 

    url = "#{ base }#{ i }.rb" 
    file = "tutthreads_#{i}.rb" 

    File.open(file, 'w') do |f| 
    system "curl -o #{f.path} #{url}" 
    end 

end 

我知道这可能会更有说服力,但它可以达到目的。一探究竟。我今天把它拼凑在一起,因为我厌倦了去每个URL来获取未包含在源代码下载中的书的代码。

4

如果你知道如何写你的要求为curl命令,有一个在线工具,可以把它变成红宝石(2.0+)代码:curl-to-ruby

目前,它知道以下选项:-d/--data-H/--header-I/--head-u/--user--url-X/--request。它是open to contributions