2016-09-17 68 views
0

我正在使用Rails 4.2.7。如何在提出请求时获取状态码?我试着下面的在RoR中,如何通过代理请求网页时获取状态码?

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' 

回答

0

我想你想resp.code

找出的一种方法是使用pry宝石。一旦安装完毕,您可以将binding.pry放在您的http.get行后面并运行您的代码。当它碰到撬线时,它会停止执行并打开一个IRB提示符,然后你可以直接尝试不同的东西来玩resp。一个非常漂亮的功能是你可以cd resp,现在“在”对象本身。键入ls,您可以看到所有可用的方法。使得这种事情变得容易得多。