2009-05-30 10 views

उत्तर

30

उपयोग OpenURI और

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

तक पहुँचने साइट/पेज/संसाधन है कि HTTP प्रमाणीकरण की आवश्यकता है।

+12

ईमानदारी से, अगर मुझे लगता है कि एक पुस्तकालय आंतरिक रूप से ओपन-यूरी का उपयोग करता है, तो मैं उस पुस्तकालय का उपयोग नहीं करता हूं। यह गहराई से गड़बड़ वाली यूआरआई पार्सर के शीर्ष पर बनाई गई गहरी गड़बड़ी वाली लाइब्रेरी है। आईआरबी में उपयोग के लिए यह ठीक है और यही वह है। –

+0

@Sorkorkmonger: ठीक है, हमारे पास यही है- आप क्या सुझाव देते हैं, कच्चे नेट :: HTTP? – apostlion

+7

नेट :: HTTP या संरक्षक या कर्व या अन्य उत्तरों में उल्लिखित अन्य पुस्तकालयों का उपयोग करें। इस जवाब को कैसे वोट दिया गया या स्वीकार किया गया मेरे बाहर है। –

90

Curb और Curl::Multi रूबी के लिए कर्ल बाइंडिंग प्रदान करते हैं।

33

यदि आपको इसे कम निम्न स्तर पसंद है, तो Typhoeus भी है, जो कर्ल :: मल्टी के शीर्ष पर बनाया गया है।

+5

मुझे आश्चर्य है कि तुम क्यों ठोकर गए हो? – method

+0

404 लिंक ....;) –

+0

मैं आपको यह बताने के लिए चाहता हूं कि लिंक अब ठीक हो गया है। – ryenus

5

Mechanize भी है, जो एक बहुत ही उच्च स्तरीय वेब स्क्रैपिंग क्लाइंट है, और HTML पार्सिंग के लिए नोकोगिरी का उपयोग करता है।

9

Curb-fu पर एक नज़र हो सकता है पर अंकुश लगाने के चारों ओर एक आवरण है जो बदले में libcurl का उपयोग करता है। Curb-fu Curb पर क्या प्रदान करता है? बस बहुत सी सिंटेक्टिक चीनी - लेकिन अक्सर आपको जो चाहिए वह हो सकता है।

4

एक और हालिया उत्तर जोड़ना, HTTPClient एक और रूबी लाइब्रेरी है जो libcurl का उपयोग करती है, समानांतर धागे और कर्ल उपहारों के बहुत सारे का समर्थन करती है। मैं किसी भी गैर-तुच्छ ऐप्स के लिए HTTPClient और Typhoeus का उपयोग करता हूं।

7

HTTP clients विभिन्न ग्राहकों के बारे में निर्णय लेने में आपकी सहायता के लिए एक अच्छा पृष्ठ है।

# 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 उपयोग करता है:

6

eat मणि OpenURI के लिए एक "प्रतिस्थापन" है। इसमें कुछ विकल्प भी हैं:

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 
+0

मैं इसे काम पर नहीं ला सकता। 'आवश्यकता': ऐसी फ़ाइल लोड नहीं कर सकता - खाएं (लोडरर) – Lumbee

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 

मैं इसे थोड़ा और वाक्पटु हो सकता है पता है, लेकिन यह यह उद्देश्य कार्य करता है। इसकी जांच - पड़ताल करें। मैंने आज इसे एक साथ जोड़ दिया क्योंकि मैं उस स्रोत के लिए कोड प्राप्त करने के लिए प्रत्येक यूआरएल पर जाने से थक गया था जो स्रोत डाउनलोड में शामिल नहीं था।

4

क्या आप जानते हैं कि कैसे एक curl आदेश के रूप में आपके अनुरोध लिखने के लिए है, वहाँ है कि यह गहरे लाल रंग का में बदल सकते हैं एक ऑनलाइन उपकरण है (2.0+) कोड: -d/--data, -H/--header: curl-to-ruby

वर्तमान में, यह निम्नलिखित विकल्पों जानता है , -I/--head, -u/--user, --url, और -X/--request। यह open to contributions है।

संबंधित मुद्दे