相当于Ruby的cURL?

use*_*748 69 ruby curl

Ruby有一个cURL库吗?

gra*_*ity 91

CurbCurl :: Multi为Ruby提供cURL绑定.


Ska*_*ade 35

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


apo*_*ion 30

使用OpenURI

  open("http://...", :http_basic_authentication=>[user, password])
Run Code Online (Sandbox Code Playgroud)

访问需要HTTP身份验证的站点/页面/资源.

  • 老实说,如果我看到一个库在内部使用open-uri,我就不会使用该库.这是一个存在严重缺陷的库,它建立在一个存在严重缺陷的URI解析器之上.它适用于IRB,就是这样. (12认同)
  • 使用Net :: HTTP或Patron或Curb或其他答案中提到的任何其他库.这个答案如何被投票或接受是超出我的. (8认同)
  • 那么也许因为open-uri是标准库的一部分? (7认同)
  • Net :: HTTP和open-uri在他们如何做http方面都是出了名的坏. (3认同)

Pet*_*per 9

Curb-fuCurb的包装器,后者又使用libcurl.Curb-fu比Curb提供什么?只是很多语法糖 - 但这通常是你需要的.


Anh*_* Do 7

您也可以查看Rest-Client

  • Heroku | 没有这样的应用 (2认同)

Mr.*_*ald 7

HTTP客户端是一个很好的页面,可以帮助您决定各种客户端.


Sea*_*ere 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
Run Code Online (Sandbox Code Playgroud)

它使用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
Run Code Online (Sandbox Code Playgroud)


cbl*_*ard 6

如果您知道如何将请求编写为curl命令,那么有一个在线工具可以将其转换为ruby(2.0+)代码:curl-to-ruby

目前,它知道下面的选项:-d/--data,-H/--header,-I/--head,-u/--user,--url,和-X/--request.它的贡献开放的.


met*_*hod 5

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


Dou*_*len 5

这是我编写的一个小程序,用于获取一些文件。

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
Run Code Online (Sandbox Code Playgroud)

我知道它可能更雄辩一些,但它达到了目的。一探究竟。我今天只是把它拼凑起来,因为我厌倦了去每个 URL 来获取源下载中未包含的书的代码。