2016-09-17 70 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,您可以看到所有可用的方法。使得這種事情變得容易得多。