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

curl with Variable Substitution in an XML Request Body

See more CURL Examples

This example shows how to use variables inside an XML request body using the {{variable_name}} syntax. When the HTTP request’s Content-Type indicates XML, Chilkat automatically applies proper XML entity encoding to each substituted value, ensuring the resulting XML remains valid.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // Variable names are enclosed between {{ and }}

  // curl -X POST https://api.example.com/api/orders \
  //   -H "Content-Type: application/xml; charset=utf-8" \
  //   -H "Accept: application/xml" \
  //   -d '<order>
  //   <customerName>{{customer_name}}</customerName>
  //   <note>{{note}}</note>
  //   <address>{{address}}</address>
  //   <instructions>{{instructions}}</instructions>
  // </order>'

  final sbCurl = CkStringBuilder();
  sbCurl.appendLn('curl -X POST https://api.example.com/api/orders \\');
  sbCurl.appendLn('  -H "Content-Type: application/xml; charset=utf-8" \\');
  sbCurl.appendLn('  -H "Accept: application/xml" \\');
  sbCurl.appendLn('  -d \'<order>');
  sbCurl.appendLn('  <customerName>{{customer_name}}</customerName>');
  sbCurl.appendLn('  <note>{{note}}</note>');
  sbCurl.appendLn('  <address>{{address}}</address>');
  sbCurl.appendLn('  <instructions>{{instructions}}</instructions>');
  sbCurl.appendLn('</order>\'');

  final curl = CkHttpCurl();

  // The values below contain chars that will require XML entity encoding.  
  // Chilkat will automatically do the encoding because the Content-Type of this request is "application/xml"
  curl.setVar('customer_name', 'John & Sons');
  curl.setVar('note', 'He said "Ship it ASAP!"');
  curl.setVar('address', '123 <Main> Street');
  curl.setVar('instructions', 'Use door #2 & call upon arrival');

  // 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.
  final sbRawRequest = CkStringBuilder();
  try {
    curl.toRawRequest(sbCurl.getAsString(), sbRawRequest);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print(sbRawRequest.getAsString());

  // The output is shown below.
  // Notice the chars that were XML entity encoded.

  // POST /api/orders HTTP/1.1
  // Accept: application/xml
  // Host: api.example.com
  // Content-Type: application/xml; charset=utf-8
  // Content-Length: 229
  // 
  // <order>
  //   <customerName>John &amp; Sons</customerName>
  //   <note>He said &quot;Ship it ASAP!&quot;</note>
  //   <address>123 &lt;Main&gt; Street</address>
  //   <instructions>Use door #2 &amp; call upon arrival</instructions>
  // </order>
}