Der cURL-Befehl läuft unter Linux, aber nicht unter Windows 2008

Der cURL-Befehl läuft unter Linux, aber nicht unter Windows 2008

Ich habe cURL auf einem Windows 2008 Server installiert und versuche, den folgenden Befehl auszuführen. Dieser Befehl wird auf einem Ubuntu-Rechner im selben LAN problemlos ausgeführt, aber wenn ich ihn unter Windows ausführe, erhalte ich diese Fehlermeldungen:

curl -H "Content-Type: application/json" -X POST -d '{ "entity_id": "switch.study_cam" }' https://192.168.1.99:8123/api/services/switch/turn_off?api_password=MyAPIPassword --insecure
curl: (6) Could not resolve host: entity_id
curl: (6) Could not resolve host: switch.study_cam
curl: (3) [globbing] unmatched close brace/bracket in column 1
{"message": "Data should be valid JSON"}

Ich habe cURL unter Windows getestet mithttp://www.google.com und es wurde gültiges HTML zurückgegeben, die Installation scheint also korrekt gewesen zu sein.

Gibt es Syntaxunterschiede zwischen cURL für Windows und Linux oder gibt es eine andere Erklärung dafür, warum der obige Befehl unter Windows fehlschlägt?

Antwort1

Das Problem liegt wahrscheinlich eher darin, dass die Windows-Eingabeaufforderung die einfachen und doppelten Anführungszeichen unterschiedlich interpretiert, und hat nichts mit curl zu tun.

Versuchen Sie, die doppelten und einfachen Anführungszeichen im JSON-Abschnitt umzukehren:

curl -H "Content-Type: application/json" -X POST -d "{ 'entity_id': 'switch.study_cam' }" https://192.168.1.99:8123/api/services/switch/turn_off?api_password=MyAPIPassword --insecure

Antwort2

Ich würde das JSON in eine Datei einfügen, z. B. json.txt, und verwenden curl -d @json.txt , um das Problem der Anführungszeichenbehandlung durch die Shell zu vermeiden.

Das Ergebnis wäre etwa

curl -H "Content-Type: application/json" -X POST -d @json.txt \
https://192.168.1.99:8123/api/services/switch\
/turn_off?api_password=MyAPIPassword --insecure

Wenn Sie eine Unix-Shell vermissen,MSYS2ist ein nettes System, um Ihrem Windows-Rechner die üblichen Tools hinzuzufügen (er muss allerdings neuer als Windows XP / Windows Server 2003 sein).

verwandte Informationen