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