Эквивалент локона для Рубина?


есть ли библиотека cURL для Ruby?

11 67

11 ответов:

использовать OpenURI и

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

доступ к сайтам / страницам / ресурсам, требующим проверки подлинности HTTP.

обочины и Curl:: Multi обеспечить скручивание привязки для Ruby.

Если вам нравится менее низкий уровень, есть также Typhoeus, который построен поверх Curl:: Multi.

Curb-fu это обертка вокруг бордюра, который в свою очередь использует libcurl. Что значит обуздать-фу предлагаем более обуздать? Просто много синтаксического сахара, но которые могут быть часто то, что вам нужно.

HTTP-клиентов это хорошая страница, чтобы помочь Вам принимать решения о различных клиентах.

вы также можете взглянуть на Rest-Client

the eat gem является "заменой" для 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

там же механизировать, который является очень высокоуровневым клиентом веб-очистки и использует Nokogiri для синтаксического анализа HTML.

если вы знаете, как написать свой запрос как curl команда, есть онлайн-инструмент, который может превратить его в ruby (2.0+) код:curl-to-ruby

в настоящее время он знает следующие варианты: -d/--data,-H/--header,-I/--head,-u/--user,--url и -X/--request. Это открыть вклад.

добавление более позднего ответа, HTTPClient - это еще одна библиотека Ruby, которая использует libcurl, поддерживает параллельные потоки и множество лакомств curl. Я использую HTTPClient и Typhoeus для любых нетривиальных приложений.

вот небольшая программа, которую я написал, чтобы получить некоторые файлы.

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, чтобы получить код для книги, которая не была включена в исходную загрузку.