Sample code for 30+ languages & platforms
PureBasic

Send a Staged REST Request with a Text Body

See more REST Examples

Demonstrates Rest.SendReqStringBody, which sends a request whose text body (such as JSON) is supplied directly, then reads the response in separate steps.

Background. The staged request model separates sending from reading: a SendReq method transmits the request, ReadResponseHeader reads the status line and headers, and a ReadResp method reads the body. This gives fine control over large or streamed messages compared with the single-call full-request methods.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkRest.pb"

Procedure ChilkatExample()

    success.i = 0

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

    bTls.i = 1
    bAutoReconnect.i = 1
    success = CkRest::ckConnect(rest,"example.com",443,bTls,bAutoReconnect)
    If success = 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    CkRest::ckAddHeader(rest,"Content-Type","application/json")

    ;  Send a request whose text body (such as JSON) is supplied directly.
    jsonBody.s = "{ " + Chr(34) + "name" + Chr(34) + ": " + Chr(34) + "example" + Chr(34) + " }"
    success = CkRest::ckSendReqStringBody(rest,"POST","/api/items",jsonBody)
    If success = 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    ;  After sending, read the response status line and header fields.  The return value is the HTTP
    ;  status code, or -1 if no response was received.
    statusCode.i = CkRest::ckReadResponseHeader(rest)
    If statusCode < 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    Debug "Response status code: " + Str(statusCode)

    ;  Read the response body as text.
    responseBody.s = CkRest::ckReadRespBodyString(rest)
    If CkRest::ckLastMethodSuccess(rest) = 0
        Debug CkRest::ckLastErrorText(rest)
        CkRest::ckDispose(rest)
        ProcedureReturn
    EndIf

    Debug responseBody


    CkRest::ckDispose(rest)


    ProcedureReturn
EndProcedure