Why in this cURL call do I get garbled JSON in the request body?

I am trying to call CloudFlare API v4 using the example provided in their own documentation.

This is an example code.

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ -H "X-Auth-Email: user@example.com " \ -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \ -H "Content-Type: application/json" \ --data '{"id":"372e67954025e0ba6aaa6d586b9e0b59","type":"A","name":"example.com","content":"1.2.3.4","proxiable":true,"proxied":false,"ttl":120,"locked":false,"zone_id":"023e105f4ecef8ad9ca31a8372d0c353","zone_name":"example.com","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","data":{}}' 

which can also be found in Update DNS Records

Using Windows cmd.exe to run this command, I need to make it one line first, so I deleted the "\" and reformatted it (twice), making sure that I did not take any part in this process.

This is the same code on the same line:

 curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" -H "X-Auth-Email: user@example.com " -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" -H "Content-Type: application/json" --data '{"id":"372e67954025e0ba6aaa6d586b9e0b59","type":"A","name":"example.com","content":"1.2.3.4","proxiable":true,"proxied":false,"ttl":120,"locked":false,"zone_id":"023e105f4ecef8ad9ca31a8372d0c353","zone_name":"example.com","created_on":"2014-01-01T05:20:00.12345Z","modified_on":"2014-01-01T05:20:00.12345Z","data":{}}' 

When I run this single liner in cmd, it works, but I get the wrong JSON in the request element, however visual inspection, formatting on notepad ++ and run through the JSON validator are positive, this JSON (copied from CloudFlare documentation) is not distorted.

Error message

 {"success":false,"errors":[{"code":6007,"message":"Malformed JSON in request body"}],"messages":[],"result":null} 

Enabling this error message or error code does not give anything, and the same command works on my boss's Linux computer.

Can someone tell me if this is a known bug, if the JSON is really distorted or something else comes to mind?

thanks

+6
source share
1 answer

Frank. Lowell, thank you for the question!

I found the answer in a blog post: "Waiting for the correct JSON to be found in the request body ..." curl for Windows .

As an example, for Clear all --data value will be:

 # On Linux --data '{"purge_everything":true}' # On Windows --data "{\"purge_everything\":true}" 

For Windows:

  • Replace single quotes with double quotes: ' --> "
  • Escape double quotes with backslash: " --> \"
+6
source

All Articles