Sample code for 30+ languages & platforms
DataFlex

Http Digest Authentication

Demonstrates the DigestAuth property to do HTTP Digest Authentication.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoHttp
    String sJsonResponse
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // To use HTTP Digest Authentication:
    Set ComLogin Of hoHttp To "myLogin"
    Set ComPassword Of hoHttp To "myPassword"
    Set ComDigestAuth Of hoHttp To True

    // If you would like to see the HTTP session log to see how 
    // HTTP digest authentication worked.
    Set ComSessionLogFilename Of hoHttp To "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.)
    Get ComQuickGetStr Of hoHttp "https://httpbin.org/digest-auth/auth/myLogin/myPassword" To sJsonResponse
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComLastStatus Of hoHttp To iTemp1
    Showln "Response status code: " iTemp1

    Showln sJsonResponse

    // 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_Procedure