Sample code for 30+ languages & platforms
Java Requires Chilkat v11.5.0+

curl with Variable Substitution in a JSON Request Body

See more CURL Examples

This 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.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.HttpCurl;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // 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}}}'

        StringBuilder sbCurl = new StringBuilder();
        sbCurl.appendLn("curl -X POST https://api.example.com/messages \\");
        sbCurl.appendLn("  -H \"Content-Type: application/json\" \\");
        sbCurl.appendLn("  -d '{\"text\":\"{{message}}\"}'");

        HttpCurl curl = new HttpCurl();

        // In this example, the value we'll provide for the "message" variable
        // will contain chars that require JSON escaping.
        curl.setVar("message", "He said \"Hello, world!\"");

        // 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.
        StringBuilder sbRawRequest = new StringBuilder();
        try {
            curl.toRawRequest(sbCurl.getAsString(), sbRawRequest);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println(sbRawRequest.getAsString());

        // 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!\""}
    }
}