Sample code for 30+ languages & platforms
PureBasic

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