加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby中的HTTPS请求

发布时间:2020-12-16 19:24:06 所属栏目:百科 来源:网络整理
导读:Ruby中的HTTPS请求是否有宝石或库?它叫什么,可以提供一些用例吗? 我想要做的是打开一个页面,从中解析出一些文本,然后输出. 解决方法 使用Ruby标准库的SSL请求 require 'net/http'require 'uri'Net::HTTP.get URI('https://encrypted.google.com') 如果传递
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包装器.诸如HTTParty和Faraday之类的包装宝石可以绕过特定的HTTP实现,也可以使用适配器来提供统一的HTTP接口.您可以查看这个Comparison matrix of Ruby HTTP client features.它比较了每个HTTP客户端库的功能.但请注意,自2012年以来信息未更新.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读