net - ruby on rails http get request
Solicitudes HTTPS en Ruby (2)
¿Hay una gema o una biblioteca para solicitudes HTTPS en Ruby? ¿Cómo se llama y puede proporcionar algún ejemplo de uso?
Lo que estoy tratando de hacer es abrir una página, analizar un poco de texto y luego generarla.
Solicitud SSL con Ruby Standard Library
require ''net/http''
require ''uri''
Net::HTTP.get URI(''https://encrypted.google.com'')
Net::HTTP
en Ruby (> = 2.0.0) realiza la verificación SSL de forma predeterminada si pasa un objeto URI que tiene una URL "https". Consulte https://github.com/ruby/ruby/blob/778bbac8ac2ae50f0987c4888f7158296ee5bbdd/lib/net/http.rb#L481
Puede verificar esto realizando una solicitud de obtención en un dominio con un certificado caducado.
uri = URI(''https://expired.badssl.com/'')
Net::HTTP.get(uri)
# OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
Solicitud SSL con gemas HTTP Ruby
Si desea utilizar una alternativa, puede usar las siguientes gemas que también realizan la verificación SSL de forma predeterminada:
Excon es una implementación pura de Ruby HTTP.
require ''excon''
Excon.get ''https://encrypted.google.com''
Curb es un cliente HTTP que utiliza libcurl bajo el capó.
require ''curl''
Curl.get ''https://encrypted.google.com''
HTTP o http.rb es una implementación pura de Ruby HTTP, pero usa http_parser.rb para analizar las solicitudes y respuestas HTTP. Dado que http_parser.rb usa extensiones nativas, afirma ser una de las bibliotecas de clientes HTTP más rápidas. Pero como siempre, toma puntos de referencia con un grano de sal.
require ''http''
HTTP.get ''https://encrypted.google.com''
HTTPClient es otra implementación pura de Ruby.
require ''httpclient''
HTTPClient.get ''https://encrypted.google.com''
Lo que se enumera aquí son las bibliotecas HTTP y no las envolturas HTTP. Las gemas HTTParty como HTTParty y Faraday envuelven alrededor de una implementación HTTP particular o usan adaptadores para proporcionar una interfaz HTTP unificada. Puede consultar esta matriz de comparación de las características del cliente HTTP de Ruby . Compara las características de cada una de las bibliotecas de clientes HTTP. Pero tenga en cuenta que la información no se actualiza desde 2012 .
Hay una biblioteca integrada en el lenguaje llamado Net::HTTP
Un ejemplo de uso de esto sería:
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
ACTUALIZACIÓN: es necesario incluir esa biblioteca de esta manera:
require ''net/https''