Perl
Perl
HTTP Redirect Handling
Examine HTTP redirects.Chilkat Perl Downloads
use chilkat();
$success = 0;
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$http = chilkat::CkHttp->new();
# Please note: The URL used in this example was a valid redirect many years ago,
# but the site does not exist any longer..
$url = "http://www.planyourweddingonline.co.za/";
# The FollowRedirects property controls whether redirects
# are automatically followed. The default behavior is to
# automatically follow redirects.
# Explicitly set FollowRedirects so that redirects are automatically taken:
$http->put_FollowRedirects(1);
# Send the HTTP GET and return the content in a string.
$html = $http->quickGetStr($url);
if ($http->get_LastMethodSuccess() != 1) {
print $http->lastErrorText() . "\r\n";
}
# On success, LastErrorText will provide information about
# what happened during the call.
print "--------------- LastErrorText ------------------" . "\r\n";
print $http->lastErrorText() . "\r\n";
print "------------------------------------------------" . "\r\n";
# In this case, we see something like this:
# ChilkatLog:
# QuickGetHtml:
# DllDate: Jul 27 2007
# url: http://www.planyourweddingonline.co.za/
# httpServer: www.planyourweddingonline.co.za
# port: 80
# StatusCode: 302
# StatusText: Found
# Reading chunked response
# redirectUrl: main/main/home/index.php
# url: http://www.planyourweddingonline.co.za/main/main/home/index.php
# StatusCode: 302
# StatusText: Found
# Reading chunked response
# redirectUrl: /main/main/home/index.php?SMC=1
# url: http://www.planyourweddingonline.co.za/main/main/home/index.php?SMC=1
# StatusCode: 200
# StatusText: OK
# CompressedSize: 7434
# UncompressedSize: 40999
# Was the GET redirected?
if ($http->get_WasRedirected() == 1) {
print "Chilkat HTTP followed the redirect." . "\r\n";
# Display the final redirect URL:
print "Final URL:" . "\r\n";
print $http->finalRedirectUrl() . "\r\n";
# Note the HTML returned is from the final redirect URL.
}
else {
print "Not redirected." . "\r\n";
}
$status = $http->get_LastStatus();
if ($status == 200) {
print "status = 200, OK!" . "\r\n";
}
else {
print "HTTP Response status = " . $status . "\r\n";
# Display the complete response header.
print $http->lastResponseHeader() . "\r\n";
}
# Now try it without following redirects:
print "-------- Now trying without following redirects...." . "\r\n";
$http->put_FollowRedirects(0);
# Send the HTTP GET and return the content in a string.
$html = $http->quickGetStr($url);
if ($http->get_LastMethodSuccess() != 1) {
# the HTML string can NULL if a 302 redirect response is received.
print "HTML string returned NULL..." . "\r\n";
}
# On success, LastErrorText will provide information about
# what happened during the call.
print "--------------- LastErrorText ------------------" . "\r\n";
print $http->lastErrorText() . "\r\n";
print "------------------------------------------------" . "\r\n";
# In this case, we see something like this:
# ChilkatLog:
# QuickGetHtml:
# DllDate: Jul 27 2007
# url: http://www.planyourweddingonline.co.za/
# StatusCode: 302
# StatusText: Found
# Reading chunked response
# redirectUrl: main/main/home/index.php
# Was this a redirect? Even if FollowRedirects is false,
# WasRedirected will be true (non-zero) if the response
# indicated a redirect.
if ($http->get_WasRedirected() == 1) {
print "This was a redirect response" . "\r\n";
# When redirects are not followed, FinalRedirectUrl
# contains the redirect URL that would've been taken...
# Display the redirect URL, which was not taken...
print "Redirect URL:" . "\r\n";
print $http->finalRedirectUrl() . "\r\n";
}
else {
print "Not redirected." . "\r\n";
}
$status = $http->get_LastStatus();
if ($status == 200) {
print "status = 200, OK!" . "\r\n";
}
else {
print "HTTP Response status = " . $status . "\r\n";
# Display the complete response header.
print $http->lastResponseHeader() . "\r\n";
}