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 <CkHttp.h>

#include <CkHttpProgress.h>

class httpProgress : public CkHttpProgress {

  public:
  httpProgress() { }
  virtual ~httpProgress() { }

  void AbortCheck(bool *abort) {
    // Application code goes here.
  }

  void PercentDone(int percentDone, bool *abort) {
    std::cout << "Percent Done: " << percentDone << "\r\n";
    // Explicitly abort at 25% or greater.
    // Remove this to allow for the HTTP download to run to completion.
    if (percentDone > 25) {
        *abort = true;
    }
  }

  void ProgressInfo(const char *name, const char *value) {
    std::cout << name << ": " << value << "\r\n";
  }

};

void ChilkatSample(void)
    {
    bool success = false;

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

    CkHttp http;
    httpProgress http_progress;
    http.put_EventCallbackObject(&http_progress);

    // Set a heartbeat in milliseconds 
    http.put_HeartbeatMs(200);

    // Download a file...
    const char *localFilePath = "qa_output/Python-3.4.4.tar.xz";
    success = http.Download("https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz",localFilePath);
    if (success == false) {
        std::cout << http.lastErrorText() << "\r\n";
        return;
    }

    std::cout << "OK!" << "\r\n";
    }