Ruby中的HTTPS请求

前端之家收集整理的这篇文章主要介绍了Ruby中的HTTPS请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Ruby中的HTTPS请求是否有宝石或库?它叫什么,可以提供一些用例吗?

我想要做的是打开一个页面,从中解析出一些文本,然后输出.

解决方法

使用Ruby标准库的SSL请求
require 'net/http'
require 'uri'
Net::HTTP.get URI('https://encrypted.google.com')

如果传递一个URI对象,那么Ruby(> = 2.0.0)中的Net :: HTTP默认执行SSL验证.见https://github.com/ruby/ruby/blob/778bbac8ac2ae50f0987c4888f7158296ee5bbdd/lib/net/http.rb#L481

您可以通过在domain上执行获取请求来验证此过期的证书.

uri = URI('https://expired.badssl.com/')
Net::HTTP.get(uri)
# OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify Failed

使用Ruby HTTP宝石的SSL请求

如果您希望使用替代方案,您可以使用以下宝石,默认情况下也执行SSL验证:

> Excon

Excon是一个纯Ruby HTTP实现.

require 'excon'
Excon.get 'https://encrypted.google.com'

> Curb

Curb是一个使用libcurl的HTTP客户端.

require 'curl'
Curl.get 'https://encrypted.google.com'

> http.rb

HTTP或http.rb是一个纯粹的Ruby HTTP实现,但使用http_parser.rb来解析HTTP请求和响应.由于http_parser.rb使用本机扩展,因此它声称是最快的HTTP客户端库之一.但一如以往,一定要吃一些盐的基准.

require 'http'
HTTP.get 'https://encrypted.google.com'

> HTTPClient

HTTPClient是另一个纯Ruby实现.

require 'httpclient'
HTTPClient.get 'https://encrypted.google.com'

这里列出的是HTTP库,而不是HTTP包装器.诸如HTTPartyFaraday之类的包装宝石可以绕过特定的HTTP实现,也可以使用适配器来提供统一的HTTP接口.您可以查看这个Comparison matrix of Ruby HTTP client features.它比较了每个HTTP客户端库的功能.但请注意,自2012年以来信息未更新.

猜你在找的Ruby相关文章