Net::HTTP::Put with 302 redirect?

C

Chris McMahon

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
 
B

Brian Candler

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')
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top