【发布时间】:2013-10-01 18:06:23
【问题描述】:
我在 rails 中使用 net/http 从 URL 中取回响应代码,代码如下;
require "net/http"
require "uri"
class Status
def initialize(url)
@url = url
end
def get_status
begin
response.code
rescue Exception => e
Rails.logger.info("Error #{e}")
end
end
def active?
["200","203","302","301"].include?(get_status) ? true : false
end
private
def lookup
URI.parse(@url)
end
def http
Net::HTTP.new(lookup.host, lookup.port)
end
def request
Net::HTTP::Get.new(lookup.request_uri)
end
def response
http.request(request)
end
end
虽然它正确地标记了失败,但它显示所有通过或失败的代码作为状态码:200,我怎样才能获得正确的状态码?
控制器:
class EnvironmentsController < ApplicationController
def status
app = App.find(params[:app_id])
environment = app.environments.find{|env| env.id.to_s == params[:id]}
render json: {up:environment.up?}
end
end
查看:
<%- App.all.each do |app| %>
<h3><%= app.name %></h3>
<ul class="app" data-app-id="<%= app.id %>">
<%- app.environments.each do |environment| %>
<li class="env" data-env-id="<%= environment.id %>">
<strong><%= environment.name %></strong>
<%= environment.url %><span class="status"> Loading. . . </span>
<!-- <i> Status Code: <% puts response.code %></i> </li> -->
<% end %>
</ul>
【问题讨论】:
-
Status.new("http://example.com/unknown").get_status返回404 -
您是否有任何其他工具可以显示来自同一 URL 的不同响应代码?
-
所以我从数据库中获取 URL 并一一浏览,我将如何实现上述代码的 Status.new 解决方案?
-
@Phillip-Marsden 请发布该代码,即不工作的部分/总是返回 200。
-
就是上面的完整代码
标签: ruby-on-rails ruby net-http