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包装器.诸如HTTParty和Faraday之类的包装宝石可以绕过特定的HTTP实现,也可以使用适配器来提供统一的HTTP接口.您可以查看这个Comparison matrix of Ruby HTTP client features.它比较了每个HTTP客户端库的功能.但请注意,自2012年以来信息未更新. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |