Sample code for 30+ languages & platforms
PureBasic

REST Download Binary File to Memory

See more REST Examples

Download a binary file to a Chilkat BinData object.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkBinData.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkRest.pb"

Procedure ChilkatExample()

    success.i = 0

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

    rest.i = CkRest::ckCreate()
    If rest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; We're going to download a sample MS-Word doc file.
    ; The URLs of our MS-Word sample documents are:

    ; https://www.chilkatdownload.com/sample_data/sample.doc
    ; https://www.chilkatdownload.com/sample_data/sample.docx

    pathPartOfUrl.s = "/sample_data/sample.doc"
    domain.s = "chilkatdownload.com"

    bTls.i = 1
    port.i = 443
    bAutoReconnect.i = 1
    success = CkRest::ckConnect(rest,domain,port,bTls,bAutoReconnect)
    If success <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    bd.i = CkBinData::ckCreate()
    If bd.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkRest::ckFullRequestNoBodyBd(rest,"GET",pathPartOfUrl,bd)
    If success <> 1
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        CkBinData::ckDispose(bd)
        ProcedureReturn
    EndIf

    ; A 200 response is expected for actual success.
    ; If we don't get a 200 response, then the response body was not actually
    ; the file data, but it was text containing error information.
    If CkRest::ckResponseStatusCode(rest) <> 200
        sbErrorText.i = CkStringBuilder::ckCreate()
        If sbErrorText.i = 0
            Debug "Failed to create object."
            ProcedureReturn
        EndIf

        CkStringBuilder::ckAppendBd(sbErrorText,bd,"utf-8",0,0)
        Debug CkStringBuilder::ckGetAsString(sbErrorText)
        Debug "-- Failed."
        CkRest::ckDispose(rest)
        CkBinData::ckDispose(bd)
        CkStringBuilder::ckDispose(sbErrorText)
        ProcedureReturn
    EndIf

    ; Save to a local file.
    ; Change the file path based on your operating system or needs...
    success = CkBinData::ckWriteFile(bd,"c:/temp/qa_output/sample.doc")
    If success <> 1
        Debug "Failed to save to local file."
        CkRest::ckDispose(rest)
        CkBinData::ckDispose(bd)
        CkStringBuilder::ckDispose(sbErrorText)
        ProcedureReturn
    EndIf

    Debug "REST Download of MS-Word File was successful."


    CkRest::ckDispose(rest)
    CkBinData::ckDispose(bd)
    CkStringBuilder::ckDispose(sbErrorText)


    ProcedureReturn
EndProcedure