2016-06-14 13 views
4

Ich habe versucht, die CloudFlare API v4 aufzurufen, mit einem Beispiel in ihrer eigenen Dokumentation zur Verfügung gestellt.Warum erhalte ich in diesem cURL-Aufruf einen fehlerhaften JSON im Anfragetext?

Dies ist der Code des Beispiels

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" \ -H "X-Auth-Email: [email protected]" \ -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":{}}' 

Welche auch bei Update DNS Records

Verwenden von Windows cmd.exe führen Sie diesen Befehl gefunden werden kann, muss ich es einzelne Zeile zuerst machen, so Ich entfernte das "\" und formatierte es (zweimal) und stellte sicher, dass ich dabei keinen Teil änderte.

Dies ist der gleiche Code in einer Zeile:

curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59" -H "X-Auth-Email: [email protected]" -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":{}}' 

Wenn ich diese Single-Liner in cmd laufen, es funktioniert, aber ich erhalte eine ungültige JSON in Anfrage Körper jedoch eine Sichtprüfung, Formatierung auf Notepad ++ und ein Durchlauf durch den JSON-Validator sind alle positiv, dieser JSON (kopiert aus der CloudFlare-Dokumentation) ist nicht fehlerhaft.

Fehlermeldung

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

diese Fehlermeldung oder den Fehlercode googeln gibt mir nichts, und diese gleichen Befehl funktioniert auf einem PC Linux von meinem Chef läuft.

Kann mir jemand sagen, ob das ein bekannter Bug ist, ob der JSON wirklich fehlerhaft ist oder etwas anderes in den Sinn kommt?

Vielen Dank

Antwort

5

Frank.Lowell, danke für Frage!

Ich fand die Antwort im Blogpost: "Expecting to find valid JSON in request body..." curl for Windows.

Als Beispiel für Purge everything--data Wert sein wird:

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

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

Für Windows:

  1. die einfachen Anführungszeichen Ersetzen durch doppelte Anführungszeichen: '-->"
  2. Flucht die doppelten Anführungszeichen mit ein Backslash: "-->\"
+0

Das hat funktioniert :) Vielen Dank. –