रूबी मानक पुस्तकालय
के साथ एसएसएल अनुरोध
require 'net/http'
require 'uri'
Net::HTTP.get URI('https://encrypted.google.com')
Net::HTTP
रूबी (> = 2.0.0) डिफ़ॉल्ट रूप से SSL सत्यापन करता है यदि आप एक यूआरआई ऑब्जेक्ट पास करते हैं जिसमें "https" यूआरएल है। देखें https://github.com/ruby/ruby/blob/778bbac8ac2ae50f0987c4888f7158296ee5bbdd/lib/net/http.rb#L481
आप एक समाप्त प्रमाणपत्र के साथ domain पर एक अनुरोध प्राप्त करके इसे सत्यापित कर सकते हैं। रूबी HTTP रत्नों से
uri = URI('https://expired.badssl.com/')
Net::HTTP.get(uri)
# OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
एसएसएल अनुरोध
आप एक विकल्प का उपयोग करना चाहते हैं, तो आप निम्नलिखित जवाहरात कि भी डिफ़ॉल्ट रूप से SSL सत्यापन करता है का उपयोग कर सकते हैं:
- Excon
एक्सकॉन एक शुद्ध रूबी HTTP कार्यान्वयन है।
require 'excon'
Excon.get 'https://encrypted.google.com'
- Curb
पर अंकुश लगाने हुड के नीचे libcurl का उपयोग करता है एक HTTP ग्राहक है।
require 'curl'
Curl.get 'https://encrypted.google.com'
- http.rb
HTTP या http.rb एक शुद्ध रूबी HTTP कार्यान्वयन है लेकिन http_parser.rb का उपयोग करता HTTP अनुरोध और प्रतिक्रियाओं पार्स करने के लिए। चूंकि http_parser.rb देशी एक्सटेंशन का उपयोग करता है, इसलिए यह सबसे तेज़ HTTP क्लाइंट लाइब्रेरी में से एक होने का दावा करता है। लेकिन हमेशा के रूप में, नमक के अनाज के साथ बेंचमार्क ले लो।
require 'http'
HTTP.get 'https://encrypted.google.com'
- HTTPClient
httpclient एक और शुद्ध रूबी कार्यान्वयन है।
require 'httpclient'
HTTPClient.get 'https://encrypted.google.com'
यहां सूचीबद्ध क्या है HTTP पुस्तकालय और HTTP रैपर नहीं।HTTParty और Faraday जैसे रैपर रत्न या तो एक विशेष HTTP कार्यान्वयन के आसपास लपेटें या एक एकीकृत HTTP इंटरफ़ेस प्रदान करने के लिए एडाप्टर का उपयोग करें। आप यह Comparison matrix of Ruby HTTP client features देख सकते हैं। यह वहां मौजूद प्रत्येक एकल HTTP क्लाइंट लाइब्रेरी की सुविधाओं की तुलना करता है। लेकिन ध्यान दें कि जानकारी से अद्यतन नहीं है।
स्रोत
2012-10-14 15:36:05
क्या आप http या https अनुरोधों के बारे में पूछ रहे थे? प्रश्न शीर्षक शरीर से मेल नहीं खाता है। –
चूंकि सभी उत्तर HTTPS के बारे में हैं, इसलिए मैंने HTTPS के बारे में पूछने के लिए प्रश्न बदल दिया। – Kevin