有没有办法在 ruby 中检查 HTTPS 状态码?我知道有一些方法可以在 HTTP 中使用require 'net/http'
,但我正在寻找 HTTPS。也许我需要使用不同的库?
问问题
17155 次
4 回答
18
您可以在 net/http 中执行此操作:
require "net/https"
require "uri"
uri = URI.parse("https://www.secure.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
res = http.request(request)
res.code #=> "200"
参考:
于 2012-10-02T07:03:32.370 回答
8
您可以使用 Net::HTTP(S) 周围的任何包装器来获得更简单的行为。我在这里使用法拉第 ( https://github.com/lostisland/faraday ) 但 HTTParty 具有几乎相同的功能 ( https://github.com/jnunemaker/httparty )
require 'faraday'
res = Faraday.get("https://www.example.com/")
res.status # => 200
res = Faraday.get("http://www.example.com/")
res.status # => 200
(作为奖励,您可以获得解析响应、引发状态异常、记录请求的选项......
connection = Faraday.new("https://www.example.com/") do |conn|
# url-encode the body if given as a hash
conn.request :url_encoded
# add an authorization header
conn.request :oauth2, 'TOKEN'
# use JSON to convert the response into a hash
conn.response :json, :content_type => /\bjson$/
# ...
conn.adapter Faraday.default_adapter
end
connection.get("/")
# GET https://www.example.com/some/path?query=string
connection.get("/some/path", :query => "string")
# POST, PUT, DELETE, PATCH....
connection.post("/some/other/path", :these => "fields", :will => "be converted to a request string in the body"}
# add any number of headers. in this example "Accept-Language: en-US"
connection.get("/some/path", nil, :accept_language => "en-US")
于 2012-10-02T08:24:30.150 回答
5
require 'uri'
require 'net/http'
res = Net::HTTP.get_response(URI('http://www.example.com/index.html'))
puts res.code # -> '200'
于 2014-02-25T11:29:42.300 回答
1
更具可读性的方式:
response.kind_of?(Net::HTTPOK)
于 2019-08-03T14:41:04.110 回答