title: Net::HTTP and Nokogiri - undefined method `body' for nil:NilClass (NoMethodError)
body: <p>Thanks for your time. Somewhat new to OOP and Ruby and after synthesizing solutions from a few different stack overflow answers I've got myself turned around.</p>
  
  <p>My goal is to write a script that parses a CSV of URLs using Nokogiri library. After trying and <a href="https://stackoverflow.com/questions/54411704/http-redirection-loop-runtimeerror-in-open-uri-redirections-gem">failing to use open-uri</a> and the open-uri-redirections plugin to follow redirects, I settled on Net::HTTP and that got me moving...until I ran into URLs that have a 302 redirect specifically.</p>
  
  <p>Here's the method I'm using to engage the URL:</p>
  
  <pre><code>require 'Nokogiri'
  require 'Net/http'
  require 'csv'
  
  def fetch(uri_str, limit = 10)
    # You should choose better exception.
    raise ArgumentError, 'HTTP redirect too deep' if limit == 0
  
    url = URI.parse(uri_str)
    #puts "The value of uri_str is: #{ uri_str}"
    #puts "The value of URI.parse(uri_str) is #{ url }"
    req = Net::HTTP::Get.new(url.path, { 'User-Agent' =&gt; 'Mozilla/5.0 (etc...)' })
    # puts "THE URL IS #{url.scheme + ":" + url.host + url.path}" # just a reporter so I can see if it's mangled
    response = Net::HTTP.start(url.host, url.port, :use_ssl =&gt; url.scheme == 'https') { |http| http.request(req) }
    case response
    when Net::HTTPSuccess     then  response
    when Net::HTTPRedirection then fetch(response['location'], limit - 1)
    else
      #puts "Problem clause!"
      response.error!
    end
  end
  </code></pre>
  
  <p>Further down in my script I take an ARGV with the URL csv filename, do CSV.read, encode the URL to a string, then use Nokogiri::HTML.parse to turn it all into something I can use xpath selectors to examine and then write to an output CSV.</p>
  
  <p>Works beautifully...so long as I encounter a 200 response, which unfortunately is not every website. When I run into a 302 I'm getting this:</p>
  
  <pre><code>C:/Ruby24-x64/lib/ruby/2.4.0/Net/http.rb:1570:in `addr_port': undefined method `+' for nil:NilClass (NoMethodError)
          from C:/Ruby24-x64/lib/ruby/2.4.0/Net/http.rb:1503:in `begin_transport'
          from C:/Ruby24-x64/lib/ruby/2.4.0/Net/http.rb:1442:in `transport_request'
          from C:/Ruby24-x64/lib/ruby/2.4.0/Net/http.rb:1416:in `request'
          from httpcsv.rb:14:in `block in fetch'
          from C:/Ruby24-x64/lib/ruby/2.4.0/Net/http.rb:877:in `start'
          from C:/Ruby24-x64/lib/ruby/2.4.0/Net/http.rb:608:in `start'
          from httpcsv.rb:14:in `fetch'
          from httpcsv.rb:17:in `fetch'
          from httpcsv.rb:42:in `block in &lt;main&gt;'
          from C:/Ruby24-x64/lib/ruby/2.4.0/csv.rb:866:in `each'
          from C:/Ruby24-x64/lib/ruby/2.4.0/csv.rb:866:in `each'
          from httpcsv.rb:38:in `&lt;main&gt;'
  </code></pre>
  
  <p>I know I'm missing something right in front of me but I can't tell what I should <code>puts</code> to see if it is nil. Any help is appreciated, thanks in advance.</p>