【问题标题】:net/http request just coming back with 200'snet/http 请求刚刚返回 200 个
【发布时间】: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


【解决方案1】:

你没有使用你的Status 类。在您看来,response 指的是当前的响应。

所以而不是:

Status Code: <% puts response.code %>

试试:

Status Code: <%= Status.new(environment.url).get_status %>

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 2015-11-22
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2021-08-03
    • 2011-11-20
    • 1970-01-01
    相关资源
    最近更新 更多