Sample code for 30+ languages & platforms
Unicode 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 Unicode C Downloads

Unicode C
#include <C_CkHttpW.h>

BOOL http_AbortCheck()
    {
    
    return FALSE;
    }

BOOL http_PercentDone(int percentDone)
    {
    wprintf(L"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 wchar_t *name, const wchar_t *value)
    {
    wprintf(L"%s: %s\n",name,value);
    }

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

    success = FALSE;

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

    http = CkHttpW_Create();
    CkHttpW_setAbortCheck(http, fnhttpAbortCheck);
    CkHttpW_setPercentDone(http, fnhttpPercentDone);
    CkHttpW_setProgressInfo(http, fnhttpProgressInfo);

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

    // Download a file...
    localFilePath = L"qa_output/Python-3.4.4.tar.xz";
    success = CkHttpW_Download(http,L"https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz",localFilePath);
    if (success == FALSE) {
        wprintf(L"%s\n",CkHttpW_lastErrorText(http));
        CkHttpW_Dispose(http);
        return;
    }

    wprintf(L"OK!\n");


    CkHttpW_Dispose(http);

    }