2016-09-17 2 views
0

Ich verwende Rails 4.2.7. Wie erhalte ich den Statuscode bei einer Anfrage? Ich versuche das untenIn RoR, wie bekomme ich den Statuscode beim Anfordern einer Webseite über einen Proxy?

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 

, aber sein resultierender im folgenden Fehler. Ich kann seine eindeutig eine 403 sehen, aber ich möchte haben, dass nett und ordentlich in einer Variablen oder zumindest eine Art von Fehler habe ich

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' 

Antwort

0

fangen kann ich glaube, Sie resp.code wollen.

Ein Weg, um herauszufinden, ist die pry gem. Nach der Installation können Sie binding.pry direkt nach Ihrer http.get Zeile einfügen und Ihren Code ausführen. Wenn es die Hebelinie trifft, hört es auf, eine IRB-Eingabeaufforderung zu öffnen und zu öffnen, und dann können Sie mit resp direkt versuchen, verschiedene Dinge auszuprobieren. Ein wirklich geschicktes Feature ist, dass Sie cd resp und sind jetzt "in" das Objekt selbst. Geben Sie ls ein und Sie können alle verfügbaren Methoden sehen. Macht es viel einfacher, diese Art von Dingen herauszufinden.

Verwandte Themen