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 <C_CkRest.h>
#include <C_CkBinData.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
BOOL success;
HCkRest rest;
const char *pathPartOfUrl;
const char *domain;
BOOL bTls;
int port;
BOOL bAutoReconnect;
HCkBinData bd;
HCkStringBuilder sbErrorText;
success = FALSE;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
rest = CkRest_Create();
// 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
pathPartOfUrl = "/sample_data/sample.doc";
domain = "chilkatdownload.com";
bTls = TRUE;
port = 443;
bAutoReconnect = TRUE;
success = CkRest_Connect(rest,domain,port,bTls,bAutoReconnect);
if (success != TRUE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
return;
}
bd = CkBinData_Create();
success = CkRest_FullRequestNoBodyBd(rest,"GET",pathPartOfUrl,bd);
if (success != TRUE) {
printf("%s\n",CkRest_lastErrorText(rest));
CkRest_Dispose(rest);
CkBinData_Dispose(bd);
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 (CkRest_getResponseStatusCode(rest) != 200) {
sbErrorText = CkStringBuilder_Create();
CkStringBuilder_AppendBd(sbErrorText,bd,"utf-8",0,0);
printf("%s\n",CkStringBuilder_getAsString(sbErrorText));
printf("-- Failed.\n");
CkRest_Dispose(rest);
CkBinData_Dispose(bd);
CkStringBuilder_Dispose(sbErrorText);
return;
}
// Save to a local file.
// Change the file path based on your operating system or needs...
success = CkBinData_WriteFile(bd,"c:/temp/qa_output/sample.doc");
if (success != TRUE) {
printf("Failed to save to local file.\n");
CkRest_Dispose(rest);
CkBinData_Dispose(bd);
CkStringBuilder_Dispose(sbErrorText);
return;
}
printf("REST Download of MS-Word File was successful.\n");
CkRest_Dispose(rest);
CkBinData_Dispose(bd);
CkStringBuilder_Dispose(sbErrorText);
}