Sample code for 30+ languages & platforms
Lianja

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loHttp = createobject("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:
loHttp.FollowRedirects = .F.

loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpNoBody("GET","http://yandex.ru/",loResp)
if (llSuccess = .F.) then
    ? loHttp.LastErrorText
    release loHttp
    release loResp
    return
endif

lnStatus = loResp.StatusCode
? "HTTP Response Status: " + str(lnStatus)

// The FinalRedirectUrl property will contain the redirect URL
// If FollowRedirects was equal to .T., then all of the 
// intermediate redirects (if any) would be followed until
// there were no more redirects.  However, because 
// FollowRedirects is not .T., FinalRedirectUrl contains
// the next redirect URL.

lnLoopCount = 0

do while (lnStatus = 302)

    ? "Redirect URL: " + loHttp.FinalRedirectUrl

    lcNextUrl = loHttp.FinalRedirectUrl
    llSuccess = loHttp.HttpNoBody("GET",lcNextUrl,loResp)
    if (llSuccess = .F.) then
        ? loHttp.LastErrorText
        release loHttp
        release loResp
        return
    endif

    lnStatus = loResp.StatusCode
    ? "HTTP Response Status: " + str(lnStatus)

    // For safety, prevent infinite loops by
    // keeping a loopCount and only allows following a max 
    // of 10 redirects:
    lnLoopCount = lnLoopCount + 1
    if (lnLoopCount > 10) then
        ? "Too many redirects."
        release loHttp
        release loResp
        return
    endif

enddo


release loHttp
release loResp