C++
C++
REST Download Binary File to Memory
See more REST Examples
Download a binary file to a Chilkat BinData object.Chilkat C++ Downloads
#include <CkRest.h>
#include <CkBinData.h>
#include <CkStringBuilder.h>
void ChilkatSample(void)
{
bool success = false;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkRest rest;
// We're going to download a sample MS-Word doc file.
// The URLs of our MS-Word sample documents are:
// https://www.chilkatdownload.com/sample_data/sample.doc
// https://www.chilkatdownload.com/sample_data/sample.docx
const char *pathPartOfUrl = "/sample_data/sample.doc";
const char *domain = "chilkatdownload.com";
bool bTls = true;
int port = 443;
bool bAutoReconnect = true;
success = rest.Connect(domain,port,bTls,bAutoReconnect);
if (success != true) {
std::cout << rest.lastErrorText() << "\r\n";
return;
}
CkBinData bd;
success = rest.FullRequestNoBodyBd("GET",pathPartOfUrl,bd);
if (success != true) {
std::cout << rest.lastErrorText() << "\r\n";
return;
}
// A 200 response is expected for actual success.
// If we don't get a 200 response, then the response body was not actually
// the file data, but it was text containing error information.
if (rest.get_ResponseStatusCode() != 200) {
CkStringBuilder sbErrorText;
sbErrorText.AppendBd(bd,"utf-8",0,0);
std::cout << sbErrorText.getAsString() << "\r\n";
std::cout << "-- Failed." << "\r\n";
return;
}
// Save to a local file.
// Change the file path based on your operating system or needs...
success = bd.WriteFile("c:/temp/qa_output/sample.doc");
if (success != true) {
std::cout << "Failed to save to local file." << "\r\n";
return;
}
std::cout << "REST Download of MS-Word File was successful." << "\r\n";
}