Sample code for 30+ languages & platforms
Visual FoxPro

HTTP Download with Progress Event Callbacks

See more HTTP Examples

Downloads a file via HTTP or HTTPS and uses event callbacks to monitor progress.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcLocalFilePath

lnSuccess = 0

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

loHttp = CreateObject('Chilkat.Http')
httpEventHandler = CreateObject("httpEvents")
EventHandler(loHttp,httpEventHandler)

*  Set a heartbeat in milliseconds 
loHttp.HeartbeatMs = 200

*  Download a file...
lcLocalFilePath = "qa_output/Python-3.4.4.tar.xz"
lnSuccess = loHttp.Download("https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz",lcLocalFilePath)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    CANCEL
ENDIF

? "OK!"

RELEASE loHttp

[K]DEFINE CLASS[/K] httpEvents [K]AS SESSION OLEPUBLIC[/K]
[K]IMPLEMENTS[/K] _IChilkatHttpEvents [K]IN[/K] "Chilkat.Http"

[K]PROCEDURE[/K] _IChilkatHttpEvents_AbortCheck(abort [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
    
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_BinaryData(data [K]As[/K] [K]Variant[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_BeginReceive
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_BeginSend
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_HttpChunked
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_EndReceive(success [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_EndSend(success [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_HttpRedirect(originalUrl [K]As[/K] [K]String[/K], redirectUrl [K]As[/K] [K]String[/K], abort [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_PercentDone(pctDone [K]As[/K] [K]Number[/K], abort [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
    ? "Percent Done: " + STR(pctDone)
    *  Explicitly abort at 25% or greater.
    *  Remove this to allow for the HTTP download to run to completion.
    IF (pctDone > 25) THEN
        abort = 1
    ENDIF
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_ProgressInfo(name [K]As[/K] [K]String[/K], value [K]As[/K] [K]String[/K])
    [C]* Application code goes here...[/C]
    ? name + ": " + value
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_ReceiveRate(byteCount [K]As[/K] [K]Number[/K], bytesPerSec [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_SendRate(byteCount [K]As[/K] [K]Number[/K], bytesPerSec [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_TaskCompleted(task [K]As[/K] [K]Generic[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatHttpEvents_TextData(data [K]As[/K] [K]String[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]


[K]ENDDEFINE[/K]