Sample code for 30+ languages & platforms
DataFlex

Fetch Web Pages from Local Cache

See more HTTP Examples

Demonstrates how to keep a local cache to avoid re-fetching web pages.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoHttp
    String sHtml
    String sTemp1
    Boolean bTemp1

    // This example assumes 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

    // Define a cache directory and set the number of levels based on the anticipated size of the cache.
    Send ComAddCacheRoot To hoHttp "c:/example/httpCache/"

    // up to 256 sub-directories under the cache root will be created as needed to hold cached GET's.
    Set ComNumCacheLevels Of hoHttp To 1

    // Tell the http object to fetch from the cache if possible.
    Set ComFetchFromCache Of hoHttp To True

    // Also tell the http object to update the cache with newly fetched pages.
    Set ComUpdateCache Of hoHttp To True

    // This HTTP GET should result in a cache file getting created.
    Get ComQuickGetStr Of hoHttp "https://www.google.com/" To sHtml
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The 1st GET was not from cache:
    Get ComLastFromCache Of hoHttp To bTemp1
    Showln "Fetched from cache: " bTemp1

    // Fetching again will cause the page to be delivered from our local cache.
    Get ComQuickGetStr Of hoHttp "https://www.google.com/" To sHtml
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The 2nd GET is from cache:
    Get ComLastFromCache Of hoHttp To bTemp1
    Showln "Fetched from cache: " bTemp1


End_Procedure