Sample code for 30+ languages & platforms
C

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 C Downloads

C
#include <C_CkHttp.h>

BOOL http_AbortCheck()
    {
    
    return FALSE;
    }

BOOL http_PercentDone(int percentDone)
    {
    printf("Percent Done: %d\n",percentDone);
    // Explicitly abort at 25% or greater.
    // Remove this to allow for the HTTP download to run to completion.
    if (percentDone > 25) {
        return TRUE;
    }
    return FALSE;
    }

void http_ProgressInfo(const char *name, const char *value)
    {
    printf("%s: %s\n",name,value);
    }

void ChilkatSample(void)
    {
    BOOL success;
    HCkHttp http;
    BOOL (*fnhttpAbortCheck)() = http_AbortCheck;
    BOOL (*fnhttpPercentDone)(int percentDone) = http_PercentDone;
    void (*fnhttpProgressInfo)(const char *name, const char *value) = http_ProgressInfo;
    const char *localFilePath;

    success = FALSE;

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

    http = CkHttp_Create();
    CkHttp_setAbortCheck(http, fnhttpAbortCheck);
    CkHttp_setPercentDone(http, fnhttpPercentDone);
    CkHttp_setProgressInfo(http, fnhttpProgressInfo);

    // Set a heartbeat in milliseconds 
    CkHttp_putHeartbeatMs(http,200);

    // Download a file...
    localFilePath = "qa_output/Python-3.4.4.tar.xz";
    success = CkHttp_Download(http,"https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz",localFilePath);
    if (success == FALSE) {
        printf("%s\n",CkHttp_lastErrorText(http));
        CkHttp_Dispose(http);
        return;
    }

    printf("OK!\n");


    CkHttp_Dispose(http);

    }