Xbase++
Xbase++
Manually Follow HTTP Redirects
See more HTTP Examples
Demonstrates how to manually follow redirects for an HTTP GET.Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oHttp
LOCAL oResp
LOCAL nStatus
LOCAL nLoopCount
LOCAL cNextUrl
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oHttp := CreateObject("Chilkat.Http")
// 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:
oHttp:FollowRedirects := 0
oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpNoBody("GET", "http://yandex.ru/", oResp)
IF (nSuccess == 0)
? oHttp:LastErrorText
oHttp:destroy()
oResp:destroy()
RETURN
ENDIF
nStatus := oResp:StatusCode
? "HTTP Response Status: " + Str(nStatus)
// 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.
nLoopCount := 0
DO WHILE (nStatus == 302)
? "Redirect URL: " + oHttp:FinalRedirectUrl
cNextUrl := oHttp:FinalRedirectUrl
nSuccess := oHttp:HttpNoBody("GET", cNextUrl, oResp)
IF (nSuccess == 0)
? oHttp:LastErrorText
oHttp:destroy()
oResp:destroy()
RETURN
ENDIF
nStatus := oResp:StatusCode
? "HTTP Response Status: " + Str(nStatus)
// For safety, prevent infinite loops by
// keeping a loopCount and only allows following a max
// of 10 redirects:
nLoopCount := nLoopCount + 1
IF (nLoopCount > 10)
? "Too many redirects."
oHttp:destroy()
oResp:destroy()
RETURN
ENDIF
ENDDO
oHttp:destroy()
oResp:destroy()