Sample code for 30+ languages & platforms
Perl

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# 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(0);

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpNoBody("GET","http://yandex.ru/",$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

$status = $resp->get_StatusCode();
print "HTTP Response Status: " . $status . "\r\n";

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

$loopCount = 0;

while (($status == 302)) {

    print "Redirect URL: " . $http->finalRedirectUrl() . "\r\n";

    $nextUrl = $http->finalRedirectUrl();
    $success = $http->HttpNoBody("GET",$nextUrl,$resp);
    if ($success == 0) {
        print $http->lastErrorText() . "\r\n";
        exit;
    }

    $status = $resp->get_StatusCode();
    print "HTTP Response Status: " . $status . "\r\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." . "\r\n";
        exit;
    }

}