RubyにHTTPSリクエスト用のgemまたはライブラリはありますか?それは何と呼ばれ、いくつかの使用例を提供できますか?
私がやろうとしているのは、ページを開き、そこからテキストを解析してから出力することです。
require 'net/http'
require 'uri'
Net::HTTP.get URI('https://encrypted.google.com')
Net::HTTP
Ruby (>= 2.0.0) では、"https" URL を持つ URI オブジェクトを渡すと、デフォルトで SSL 検証が実行されます。https://github.com/ruby/ruby/blob/778bbac8ac2ae50f0987c4888f7158296ee5bbdd/lib/net/http.rb#L481を参照してください。
これは、期限切れの証明書を持つドメインで取得リクエストを実行することで確認できます。
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 検証も実行する次の gem を使用できます。
Excon は純粋な Ruby HTTP 実装です。
require 'excon'
Excon.get 'https://encrypted.google.com'
Curb は、内部で libcurl を使用する HTTP クライアントです。
require 'curl'
Curl.get 'https://encrypted.google.com'
HTTP または http.rb は純粋な Ruby HTTP 実装ですが、http_parser.rbを使用して HTTP リクエストとレスポンスを解析します。http_parser.rb はネイティブ拡張機能を使用しているため、最速の HTTP クライアント ライブラリの 1 つとされています。ただし、いつものように、ベンチマークは大まかに考えてください。
require 'http'
HTTP.get 'https://encrypted.google.com'
HTTPClient は、もう 1 つの純粋な Ruby 実装です。
require 'httpclient'
HTTPClient.get 'https://encrypted.google.com'
ここにリストされているのは HTTP ライブラリであり、HTTP ラッパーではありません。HTTPartyやFaradayなどのラッパー gemは、特定の HTTP 実装をラップするか、アダプターを使用して統一された HTTP インターフェースを提供します。このRuby HTTP クライアント機能の比較マトリックス を確認してください。そこにあるすべての HTTP クライアント ライブラリの機能を比較します。ただし、情報は 2012 年以降更新されていないことに注意してください。
と呼ばれる言語の統合ライブラリがあります。Net::HTTP
使用例は次のとおりです。
uri = URI('https://example.com/some_path?query=string')
response = Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new uri.request_uri
http.request request # Net::HTTPResponse object
end
puts response.body
更新:次 のようにそのライブラリを含める必要があります。
require 'net/https'