1

在 Rails 控制器中,我想url通过向它发出请求并检查响应不是 50X 来验证用户输入的 URL(例如,它在一个变量中)。我怎样才能做到这一点?

4

2 回答 2

1

您可以使用模块从控制器发送请求,Net::Http如下所示

uri = URI('http://festivalsherpa.com')
response = Net::HTTP.get_response(uri)

response.to_hash["status"] will return you proper response code
于 2012-11-24T05:56:43.310 回答
0

还有一种方法

您可以以更有意义的方式进行操作,例如:

uri = URI.parse(your_url)
connection = Net::HTTP.new(uri.host)
request = Net::HTTP::Get.new(uri.request_uri) # For post req, you can replace 'Get' by  'Post'
response = connection.request(request)

您可以看到返回的内容:

p response.body

如果返回的响应是 JSON,那么你可以这样做

JSON.parse(response.body)  #It will give you hash object

您可以检查响应代码/状态

  p response.code

如果要处理状态码,那么可以通过case语句来处理

case response.code
 when "200"
     <some code>
 when "500"
     <some code>
 end

等等..

于 2012-11-24T06:46:37.373 回答