Perl
Perl
Manually Follow HTTP Redirects
See more HTTP Examples
Demonstrates how to manually follow redirects for an HTTP GET.Chilkat Perl Downloads
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;
}
}