Sample code for 30+ languages & platforms
C++

Example: Http.ResumeDownload method

Demonstrates the ResumeDownload method.

Chilkat C++ Downloads

C++
#include <CkHttp.h>
#include <CkFileAccess.h>

void ChilkatSample(void)
    {
    bool success = false;

    CkHttp http;
    http.put_KeepResponseBody(true);

    //  To demonstrate resuming a download, we've created a file on the chilkatsoft.com
    //  web server that contains the first 82,379 bytes of the full  279,658 bytes of the hamlet.xml file.

    //  We'll first download the partial file, and pretend it was a previous incomplete attempt to download the entire file.
    const char *localFilePath = "c:/temp/qa_output/hamlet.xml";
    success = http.Download("https://www.chilkatsoft.com/testData/hamlet_partial.xml",localFilePath);
    if (success == false) {
        std::cout << http.lastErrorText() << "\r\n";
        return;
    }

    //  Download the remainder of hamlet.xml.
    success = http.ResumeDownload("https://www.chilkatsoft.com/testData/hamlet.xml",localFilePath);
    int statusCode = http.get_LastStatus();
    if (success == false) {
        if (statusCode == 0) {
            //  Unable to either send the request or get the response.
            std::cout << http.lastErrorText() << "\r\n";
        }
        else {
            //  We got a response, but the status code was not in the 200s
            std::cout << "Response status code: " << statusCode << "\r\n";
            //  Examine the response body.
            std::cout << "Response body:" << "\r\n";
            std::cout << http.lastResponseBody() << "\r\n";
        }

        std::cout << "Download failed." << "\r\n";

    }
    else {
        std::cout << "Download success, response status = " << statusCode << "\r\n";
    }

    //  The hamlet.xml file should be 279,658 bytes
    CkFileAccess fac;
    std::cout << "size of hamlet.xml: " << fac.FileSize(localFilePath) << "\r\n";

    std::cout << "Success." << "\r\n";
    }