Forum: Ruby Net::HTTP::Put with 302 redirect?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Chris McMahon (Guest)
on 2007-05-22 01:31
(Received via mailing list)
Sorry if this gets double-posted:

Is there any way to get net/http to follow a 302 redirect?

title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://bar.foo.com:22010">here</
a>.</p>

###################

require 'net/http'

uri = 'http://foo.bar.com:22010'

unless uri = (URI.parse(ARGV.shift) rescue nil)
  puts "Usage: #$0 <url>"
  exit
end

puts "Sending PUT #{uri.request_uri} to #{uri.host}:#{uri.port}"
Net::HTTP.start(uri.host, uri.port) do |http|
  headers = {'Content-Type' => 'text/plain; charset=utf-8'}
  put_data = "put payload"
  response = http.send_request('PUT', uri.request_uri, put_data,
headers)
  puts "Response #{response.code} #{response.message}:
#{response.body}"
end
Brian C. (Guest)
on 2007-05-22 01:36
(Received via mailing list)
On Tue, May 22, 2007 at 06:30:03AM +0900, Chris McMahon wrote:
>
> Sorry if this gets double-posted:
>
> Is there any way to get net/http to follow a 302 redirect?

Lots of examples in the source; look for it in
/usr/lib/ruby/1.8/net/http.rb
or somewhere similar on your system.

  # === Following Redirection
  #
  #     require 'net/http'
  #     require 'uri'
  #
  #     def fetch(uri_str, limit = 10)
  #       # You should choose better exception.
  #       raise ArgumentError, 'HTTP redirect too deep' if limit == 0
  #
  #       response = Net::HTTP.get_response(URI.parse(uri_str))
  #       case response
  #       when Net::HTTPSuccess     then response
  #       when Net::HTTPRedirection then fetch(response['location'],
limit - 1)
  #       else
  #         response.error!
  #       end
  #     end
  #
  #     print fetch('http://www.ruby-lang.org')
This topic is locked and can not be replied to.