Sample code for 30+ languages & platforms
Delphi DLL

SharePoint -- Download File (Site Collection)

Demonstrates how to download a file from SharePoint located in the /Documents folder in a site within a site collection.

The format for a URL for a resource contained in a site within a site collection is like this:

https://contoso.com/sites/teamA/_api/web/GetFolderByServerRelativeUrl('/sites/teamA/Documents')/Files('SomeDocument.docx')/$value

Notice that the "/sites/teamA" (where "teamA" is the name of the site) occurs twice in the URL.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
http: HCkHttp;
url: PWideChar;
localFilePath: PWideChar;

begin
success := False;

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

// -------------------------------------------------------------------------
// The following comments apply to SharePoint Windows classic authentication.
// -------------------------------------------------------------------------
// For example, imagine our SharePoint endpoint is https://xyzoffice.mycompany.com/
// The SHAREPOINT_NTLM_DOMAIN would be "mycompany.com"
// The SHAREPOINT_HTTPS_DOMAIN would be "xyzoffice.mycompany.com"
// Also, the SHAREPOINT_USERNAME would be just the name, not a full email address.
// for example, "chilkat" instead of "chilkat@mycompany.com"

http := CkHttp_Create();

// If SharePoint Windows classic authentication is used, then set the 
// Login, Password, LoginDomain, and NtlmAuth properties.
CkHttp_putLogin(http,'SHAREPOINT_USERNAME');
CkHttp_putPassword(http,'SHAREPOINT_PASSWORD');
CkHttp_putLoginDomain(http,'SHAREPOINT_NTLM_DOMAIN');
CkHttp_putNtlmAuth(http,True);

// -------------------------------------------------------------------------
// The more common case is to use SharePoint Online authentication (via the SPOIDCRL cookie).
// If so, do not set Login, Password, LoginDomain, and NtlmAuth, and instead
// establish the cookie as shown at SharePoint Online Authentication
// -------------------------------------------------------------------------

// This example downloads the file named "Domain Name created for Exchange.docx"

// Note: I was initially confused by the "$value" part of the URL. 
// When I see something like $value, I immediately think that it's some sort of
// variable or placeholder to be replaced with an actual value.  In this case,
// the "$value" is literally part of the URL.  It's not replace with anything.

// --------------------------------------------------------------------------------
// IMPORTANT: The format for a URL within a site collection is like this:
// https://SHAREPOINT_HTTPS_DOMAIN/sites/teamA/_api/web/GetFolderByServerRelativeUrl('/sites/teamA/Documents')/Files('Domain Name created for Exchange.docx')/$value
// 
// Notice that "/sites/teamA" is specified twice in the above sample URL.
// --------------------------------------------------------------------------------

url := 'https://SHAREPOINT_HTTPS_DOMAIN/sites/teamA/_api/web/GetFolderByServerRelativeUrl(''/sites/teamA/Documents'')/Files(''Domain Name created for Exchange.docx'')/$value';
localFilePath := 'qa_output/x.docx';

success := CkHttp_Download(http,url,localFilePath);
if (success <> True) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

Memo1.Lines.Add('File successfully downloaded from a SharePoint site within a site collection.');

CkHttp_Dispose(http);

end;