在RoR中,如何通过代理请求网页时获取状态代码?

时间:2016-09-17 19:34:59

标签: ruby-on-rails http response status socks

我正在使用Rails 4.2.7。如何在提出请求时获取状态代码?我正在尝试下面的

  uri = URI(url)
  content = nil
  status = nil
  content_type = nil
  res1 = Net::HTTP.SOCKSProxy('127.0.0.1', 50001).start(uri.host, uri.port) do |http|
    puts "launching #{uri.path}"
    resp = http.get(uri.path)
    status = resp.status
    content = resp.content
    content_type = resp['content-type']
  end

但导致以下错误。我可以清楚地看到它的403,但我希望在一个变量中有这么好的整洁,或者至少有一些我能抓到的错误

Error during processing: undefined method `status' for #<Net::HTTPForbidden 403 Forbidden readbody=true>
/Users/davea/Documents/workspace/myproject/app/helpers/webpage_helper.rb:77:in `block in get_content'
/Users/davea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:853:in `start'
/Users/davea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:584:in `start'
/Users/davea/Documents/workspace/myproject/app/helpers/webpage_helper.rb:74:in `get_content'

1 个答案:

答案 0 :(得分:0)

我想你想要resp.code

找到的一种方法是使用pry gem。安装完成后,您可以在binding.pry行后面放置http.get并运行代码。当它击中撬线时,它将停止执行并打开IRB提示,然后您可以直接尝试resp尝试不同的事情。一个非常好的功能是你可以cd resp并且现在“进入”对象本身。输入ls,您就可以看到所有可用的方法。使这类事情变得更容易。