Sample code for 30+ languages & platforms
Ruby

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Ruby Downloads

Ruby
require 'chilkat'

success = false

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

http = Chilkat::CkHttp.new()

# The FollowRedirects property controls whether redirects
# are automatically followed.  The default behavior is to
# automatically follow redirects.

# Explicitly set FollowRedirects so that redirects are NOT automatically taken:
http.put_FollowRedirects(false)

resp = Chilkat::CkHttpResponse.new()
success = http.HttpNoBody("GET","http://yandex.ru/",resp)
if (success == false)
    print http.lastErrorText() + "\n";
    exit
end

status = resp.get_StatusCode()
print "HTTP Response Status: " + status.to_s() + "\n";

# The FinalRedirectUrl property will contain the redirect URL
# If FollowRedirects was equal to true, then all of the 
# intermediate redirects (if any) would be followed until
# there were no more redirects.  However, because 
# FollowRedirects is not true, FinalRedirectUrl contains
# the next redirect URL.

loopCount = 0

while (status == 302)

    print "Redirect URL: " + http.finalRedirectUrl() + "\n";

    nextUrl = http.finalRedirectUrl()
    success = http.HttpNoBody("GET",nextUrl,resp)
    if (success == false)
        print http.lastErrorText() + "\n";
        exit
    end

    status = resp.get_StatusCode()
    print "HTTP Response Status: " + status.to_s() + "\n";

    # For safety, prevent infinite loops by
    # keeping a loopCount and only allows following a max 
    # of 10 redirects:
    loopCount = loopCount + 1
    if (loopCount > 10)
        print "Too many redirects." + "\n";
        exit
    end

end