C
C
DocuSign Download Envelope Document (PDF)
See more DocuSign Examples
Retrieves the specified document from the envelope. The response body of this method is the PDF file as a byte stream. You can get the file name and document ID from the response's Content-Disposition header.Chilkat C Downloads
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkBinData.h>
#include <C_CkMime.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttp http;
HCkJsonObject jsonToken;
const char *url;
HCkBinData bd;
int respStatusCode;
HCkMime mime;
const char *filename;
HCkStringBuilder sbPath;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
// Implements the following HTTP request:
// GET /restapi/v2.1/accounts/{accountId}/envelopes/{envelopeId}/documents/1
// Adds the "Authorization: Bearer eyJ0eXAi.....UE8Kl_V8KroQ" header.
jsonToken = CkJsonObject_Create();
// Load a previously obtained OAuth2 access token.
success = CkJsonObject_LoadFile(jsonToken,"qa_data/tokens/docusign.json");
if (success == FALSE) {
printf("%s\n",CkJsonObject_lastErrorText(jsonToken));
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
return;
}
CkHttp_putAuthToken(http,CkJsonObject_stringOf(jsonToken,"access_token"));
// Use your account ID and a valid envelopeId here:
CkHttp_SetUrlVar(http,"accountId","7f3f65ed-5e87-418d-94c1-92499ddc8252");
CkHttp_SetUrlVar(http,"envelopeId","90d7e40a-b4bd-4ccd-bf38-c80e37954a13");
url = "https://demo.docusign.net/restapi/v2.1/accounts/{$accountId}/envelopes/{$envelopeId}/documents/1";
bd = CkBinData_Create();
success = CkHttp_DownloadBd(http,url,bd);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkBinData_Dispose(bd);
return;
}
respStatusCode = CkHttp_getLastStatus(http);
printf("Response Status Code = %d\n",respStatusCode);
if (respStatusCode != 200) {
printf("Response Header:\n");
printf("%s\n",CkHttp_lastResponseHeader(http));
// The response body contains an error message.
printf("%s\n",CkBinData_getString(bd,"utf-8"));
printf("Failed.\n");
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkBinData_Dispose(bd);
return;
}
// The response indicated success.
// Get the filename from the Content-Disposition header and save to a file.
mime = CkMime_Create();
CkMime_LoadMime(mime,CkHttp_lastResponseHeader(http));
filename = CkMime_getHeaderFieldAttribute(mime,"Content-Disposition","filename");
printf("filename = %s\n",filename);
sbPath = CkStringBuilder_Create();
CkStringBuilder_Append(sbPath,"C:/aaworkarea/");
CkStringBuilder_Append(sbPath,filename);
success = CkBinData_WriteFile(bd,CkStringBuilder_getAsString(sbPath));
if (success == FALSE) {
printf("Failed to save to output file.\n");
}
else {
printf("Wrote %s\n",CkStringBuilder_getAsString(sbPath));
}
CkHttp_Dispose(http);
CkJsonObject_Dispose(jsonToken);
CkBinData_Dispose(bd);
CkMime_Dispose(mime);
CkStringBuilder_Dispose(sbPath);
}