Sample code for 30+ languages & platforms
Delphi ActiveX

Http Digest Authentication

Demonstrates the DigestAuth property to do HTTP Digest Authentication.

Chilkat Delphi ActiveX Downloads

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
http: TChilkatHttp;
jsonResponse: WideString;

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

http := TChilkatHttp.Create(Self);

// To use HTTP Digest Authentication:
http.Login := 'myLogin';
http.Password := 'myPassword';
http.DigestAuth := 1;

// If you would like to see the HTTP session log to see how 
// HTTP digest authentication worked.
http.SessionLogFilename := 'c:/temp/qa_output/sessionLog.txt';

// Run the test using this URL with the credentials above.  
// (Works while httpbin.org keeps the test endpoint available.)
jsonResponse := http.QuickGetStr('https://httpbin.org/digest-auth/auth/myLogin/myPassword');
if (http.LastMethodSuccess = 0) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Response status code: ' + IntToStr(http.LastStatus));

Memo1.Lines.Add(jsonResponse);

// Output:

// Response status code: 200
// {
//   "authenticated": true, 
//   "user": "myLogin"
// }

// -----------------------------------------------
// Here are the contents of the sessionLog.txt

// ---- Sending Sat, 30 Aug 2025 11:23:12 GMT ----
// GET /digest-auth/auth/myLogin/myPassword HTTP/1.1
// Host: httpbin.org
// Accept: */*
// Accept-Encoding: gzip
// 
// 
// ---- Received Sat, 30 Aug 2025 11:23:12 GMT ----
// HTTP/1.1 401 UNAUTHORIZED
// Date: Sat, 30 Aug 2025 11:23:12 GMT
// Content-Type: text/html; charset=utf-8
// Content-Length: 0
// Connection: keep-alive
// Server: gunicorn/19.9.0
// WWW-Authenticate: Digest realm="me@kennethreitz.com", nonce="fbc6733e2f4d126e7a92d19918f42b0f", qop="auth", opaque="5a14177dc4089cb22c019e6df4fdaadf", algorithm=MD5, stale=FALSE
// Set-Cookie: stale_after=never; Path=/
// Set-Cookie: fake=fake_value; Path=/
// Access-Control-Allow-Origin: *
// Access-Control-Allow-Credentials: true
// 
// 
// ---- Sending Sat, 30 Aug 2025 11:23:12 GMT ----
// GET /digest-auth/auth/myLogin/myPassword HTTP/1.1
// Host: httpbin.org
// Accept: */*
// Accept-Encoding: gzip
// Authorization: Digest ****
// 
// 
// ---- Received Sat, 30 Aug 2025 11:23:12 GMT ----
// HTTP/1.1 200 OK
// Date: Sat, 30 Aug 2025 11:23:13 GMT
// Content-Type: application/json
// Content-Length: 50
// Connection: keep-alive
// Server: gunicorn/19.9.0
// Set-Cookie: fake=fake_value; Path=/
// Access-Control-Allow-Origin: *
// Access-Control-Allow-Credentials: true
// 
// {
//   "authenticated": true, 
//   "user": "myLogin"
// }
end;