Sample code for 30+ languages & platforms
PureBasic Requires Chilkat v11.0.0+

HTTP Methods - GET and DELETE

Demonstrate a method for sending HTTP requests that don't have a request body, such as for GET or DELETE requests.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"

Procedure ChilkatExample()

    success.i = 0

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

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

    ;  Specifiy a session log file so we can see the exact request/response
    CkHttp::setCkSessionLogFilename(http, "c:/aaworkarea/sessionLog.txt")

    ;  Perhaps add a custom header or two..
    CkHttp::ckSetRequestHeader(http,"x-exz-date","20201012T235046Z")
    CkHttp::ckSetRequestHeader(http,"x-exz-id","1234")

    ;  Send a GET request to https://www.example.com/someting?param1=123&param2=abc
    url.s = "https://www.example.com/someting?param1=123&param2=abc"
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpNoBody(http,"GET",url,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ;  The GET request that is sent looks like this.
    ;  The Accept and Accept-Encoding headers are automatically added by default.

    ;  	GET /someting?param1=123&param2=abc HTTP/1.1
    ;  	Host: www.example.com
    ;  	Accept: */*
    ;  	Accept-Encoding: gzip
    ;  	x-exz-date: 20201012T235046Z
    ;  	x-exz-id: 1234

    ;  Get the response status
    statusCode.i = CkHttpResponse::ckStatusCode(resp)
    Debug "Response status: " + Str(statusCode)

    ;  Get the response body
    Debug CkHttpResponse::ckBodyStr(resp)

    ;  -------------------------------------------------------------
    ;  Let's say we want to send a DELETE request, and we only want to accept an application/json response,
    ;  and we don't want gzipped responses...

    ;  First remove the previously specified custom headers.
    CkHttp::ckClearHeaders(http)

    ;  Indicate we only accept application/json non-gzipped responses.
    CkHttp::setCkAccept(http, "application/json")
    CkHttp::setCkAllowGzip(http, 0)

    ;  Send a DELETE request to https://www.example.com/deleteSomething
    url = "https://www.example.com/deleteSomething"
    success = CkHttp::ckHttpNoBody(http,"DELETE",url,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ;  The DELETE request that is sent looks like this.
    ;  The empty Accept-Encoding header value means we only want non-compressed responses.

    ;  	DELETE /deleteSomething HTTP/1.1
    ;  	Host: www.example.com
    ;  	Accept: application/json
    ;  	Accept-Encoding: 

    ;  Get the response status
    statusCode = CkHttpResponse::ckStatusCode(resp)
    Debug "Response status: " + Str(statusCode)

    ;  Get the response body
    Debug CkHttpResponse::ckBodyStr(resp)


    CkHttp::ckDispose(http)
    CkHttpResponse::ckDispose(resp)


    ProcedureReturn
EndProcedure