Sample code for 30+ languages & platforms
PureBasic

HTTP POST x-www-form-urlencoded

Demonstrates how to send a simple x-www-form-urlencoded POST.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkFileAccess.pb"
IncludeFile "CkHttpRequest.pb"

Procedure ChilkatExample()

    success.i = 0

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

    jsonStr.s = "{ some json ... }"

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

    ; This query parameter just happens to be named "json" and contains JSON text.
    CkHttpRequest::ckAddParam(req,"json",jsonStr)

    ; We can optionally add more query parameters. 
    CkHttpRequest::ckAddParam(req,"abc","123")
    CkHttpRequest::ckAddParam(req,"xml","<abc>123</abc>")

    ; Note: Just because we passed a query param named "json" or "xml" means nothing special.  It's still just
    ; a name=value query parameter..

    CkHttpRequest::setCkHttpVerb(req, "POST")
    CkHttpRequest::setCkContentType(req, "application/x-www-form-urlencoded")

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

    success = CkHttp::ckHttpReq(http,"http://example.com/xyz/connect/report",req,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpRequest::ckDispose(req)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug "Hey, I didn't receive the expected response status code!"
        Debug "status code = " + Str(CkHttpResponse::ckStatusCode(resp))
    EndIf

    ; Could be error text if the status code wasn't what we expected, or could be the response
    ; body you're seeking..
    responseBody.s = CkHttpResponse::ckBodyStr(resp)
    Debug responseBody

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

    filepath.s = "some file path"
    success = CkFileAccess::ckWriteEntireTextFile(fac,filepath,responseBody,"utf-8",0)
    If success <> 1
        Debug CkFileAccess::ckLastErrorText(fac)
    EndIf



    CkHttp::ckDispose(http)
    CkHttpRequest::ckDispose(req)
    CkHttpResponse::ckDispose(resp)
    CkFileAccess::ckDispose(fac)


    ProcedureReturn
EndProcedure