![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) curl with Variable Substitution in a JSON Request BodySee more CURL ExamplesThis example shows how to use variables inside a JSON request body using the {{variable_name}} syntax. When the HTTP request’s Content-Type indicates JSON, Chilkat automatically applies proper JSON escaping to each substituted value, ensuring the resulting JSON remains valid.Note: This example requires Chilkat v11.5.0 or greater.
IncludeFile "CkStringBuilder.pb" IncludeFile "CkHttpCurl.pb" Procedure ChilkatExample() success.i = 0 ; Variable names are enclosed between {{ and }} ; Important: The variable {{var_name}} should be placed inside the quotes. ; This is correct: ; curl -X POST https://api.example.com/messages \ ; -H "Content-Type: application/json" \ ; -d '{"text":"{{message}}"}' ; This is incorrect: ; -d '{"text":{{message}}}' sbCurl.i = CkStringBuilder::ckCreate() If sbCurl.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckAppendLn(sbCurl,"curl -X POST https://api.example.com/messages \") CkStringBuilder::ckAppendLn(sbCurl," -H " + Chr(34) + "Content-Type: application/json" + Chr(34) + " \") CkStringBuilder::ckAppendLn(sbCurl," -d '{" + Chr(34) + "text" + Chr(34) + ":" + Chr(34) + "{{message}}" + Chr(34) + "}'") curl.i = CkHttpCurl::ckCreate() If curl.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; In this example, the value we'll provide for the "message" variable ; will contain chars that require JSON escaping. CkHttpCurl::ckSetVar(curl,"message","He said " + Chr(34) + "Hello, world!" + Chr(34)) ; To demonstrate how the variables are replaced, this example does not execute the curl command. ; Instead, it generates the raw HTTP request that would be sent if the curl command were run. sbRawRequest.i = CkStringBuilder::ckCreate() If sbRawRequest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkHttpCurl::ckToRawRequest(curl,CkStringBuilder::ckGetAsString(sbCurl),sbRawRequest) If success = 0 Debug CkHttpCurl::ckLastErrorText(curl) CkStringBuilder::ckDispose(sbCurl) CkHttpCurl::ckDispose(curl) CkStringBuilder::ckDispose(sbRawRequest) ProcedureReturn EndIf Debug CkStringBuilder::ckGetAsString(sbRawRequest) ; The output is shown below. ; Notice that the quote chars around "Hello World!" are properly JSON escaped. ; POST /messages HTTP/1.1 ; Host: api.example.com ; Content-Type: application/json ; Content-Length: 36 ; ; {"text":"He said \"Hello, world!\""} CkStringBuilder::ckDispose(sbCurl) CkHttpCurl::ckDispose(curl) CkStringBuilder::ckDispose(sbRawRequest) ProcedureReturn EndProcedure |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.