Go
Go
Manually Follow HTTP Redirects
See more HTTP Examples
Demonstrates how to manually follow redirects for an HTTP GET.Chilkat Go Downloads
success := false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := chilkat.NewHttp()
// 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.SetFollowRedirects(false)
resp := chilkat.NewHttpResponse()
success = http.HttpNoBody("GET","http://yandex.ru/",resp)
if success == false {
fmt.Println(http.LastErrorText())
http.DisposeHttp()
resp.DisposeHttpResponse()
return
}
status := resp.StatusCode()
fmt.Println("HTTP Response Status: ", status)
// 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
for (status == 302) {
fmt.Println("Redirect URL: ", http.FinalRedirectUrl())
nextUrl := http.FinalRedirectUrl()
success = http.HttpNoBody("GET",nextUrl,resp)
if success == false {
fmt.Println(http.LastErrorText())
http.DisposeHttp()
resp.DisposeHttpResponse()
return
}
status = resp.StatusCode()
fmt.Println("HTTP Response Status: ", status)
// For safety, prevent infinite loops by
// keeping a loopCount and only allows following a max
// of 10 redirects:
loopCount = loopCount + 1
if loopCount > 10 {
fmt.Println("Too many redirects.")
http.DisposeHttp()
resp.DisposeHttpResponse()
return
}
}
http.DisposeHttp()
resp.DisposeHttpResponse()