RoR中,通过代理请求网页时如何获取状态码?
In RoR, how do I get the status code when requesting a web page through a proxy?
我正在使用 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'
我想你想要 resp.code
。
找出答案的一种方法是使用 pry
gem。安装后,您可以将 binding.pry
放在 http.get
行和 运行 代码之后。当它碰到撬线时,它将停止执行并打开 IRB 提示,然后您可以直接使用 resp
尝试不同的东西。一个非常漂亮的功能是您可以 cd resp
现在 "in" 对象本身。输入 ls
,您可以看到所有可用的方法。使解决这类问题变得容易得多。
我正在使用 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'
我想你想要 resp.code
。
找出答案的一种方法是使用 pry
gem。安装后,您可以将 binding.pry
放在 http.get
行和 运行 代码之后。当它碰到撬线时,它将停止执行并打开 IRB 提示,然后您可以直接使用 resp
尝试不同的东西。一个非常漂亮的功能是您可以 cd resp
现在 "in" 对象本身。输入 ls
,您可以看到所有可用的方法。使解决这类问题变得容易得多。