Sample code for 30+ languages & platforms
Go

Http Digest Authentication

Demonstrates the DigestAuth property to do HTTP Digest Authentication.

Chilkat Go Downloads

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

    http := chilkat.NewHttp()

    // To use HTTP Digest Authentication:
    http.SetLogin("myLogin")
    http.SetPassword("myPassword")
    http.SetDigestAuth(true)

    // If you would like to see the HTTP session log to see how 
    // HTTP digest authentication worked.
    http.SetSessionLogFilename("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() == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        return
    }

    fmt.Println("Response status code: ", http.LastStatus())

    fmt.Println(*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"
    // }

    http.DisposeHttp()