Tcl
Tcl
Manually Follow HTTP Redirects
See more HTTP Examples
Demonstrates how to manually follow redirects for an HTTP GET.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set http [new_CkHttp]
# 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:
CkHttp_put_FollowRedirects $http 0
set resp [new_CkHttpResponse]
set success [CkHttp_HttpNoBody $http "GET" "http://yandex.ru/" $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkHttp $http
delete_CkHttpResponse $resp
exit
}
set status [CkHttpResponse_get_StatusCode $resp]
puts "HTTP Response Status: $status"
# 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.
set loopCount 0
while {$status == 302} {
puts "Redirect URL: [CkHttp_finalRedirectUrl $http]"
set nextUrl [CkHttp_finalRedirectUrl $http]
set success [CkHttp_HttpNoBody $http "GET" $nextUrl $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkHttp $http
delete_CkHttpResponse $resp
exit
}
set status [CkHttpResponse_get_StatusCode $resp]
puts "HTTP Response Status: $status"
# For safety, prevent infinite loops by
# keeping a loopCount and only allows following a max
# of 10 redirects:
set loopCount [expr $loopCount + 1]
if {$loopCount > 10} then {
puts "Too many redirects."
delete_CkHttp $http
delete_CkHttpResponse $resp
exit
}
}
delete_CkHttp $http
delete_CkHttpResponse $resp