Sample code for 30+ languages & platforms
Visual FoxPro

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loResp
LOCAL lnStatus
LOCAL lnLoopCount
LOCAL lcNextUrl

lnSuccess = 0

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

loHttp = 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:
loHttp.FollowRedirects = 0

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpNoBody("GET","http://yandex.ru/",loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

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

* 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.

lnLoopCount = 0

DO WHILE (lnStatus = 302)

    ? "Redirect URL: " + loHttp.FinalRedirectUrl

    lcNextUrl = loHttp.FinalRedirectUrl
    lnSuccess = loHttp.HttpNoBody("GET",lcNextUrl,loResp)
    IF (lnSuccess = 0) THEN
        ? loHttp.LastErrorText
        RELEASE loHttp
        RELEASE loResp
        CANCEL
    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
        CANCEL
    ENDIF

ENDDO

RELEASE loHttp
RELEASE loResp