2016-09-17 3 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 и вы увидите все доступные методы. Делает это гораздо проще.