El comando cURL se ejecuta en Linux pero no en Windows 2008

El comando cURL se ejecuta en Linux pero no en Windows 2008

Instalé cURL en Windows 2008 Server y estoy intentando ejecutar el siguiente comando. Este comando se ejecuta bien en una máquina Ubuntu en la misma LAN, pero cuando lo ejecuto en Windows aparece estos errores:

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"}

Probé cURL en Windows conhttp://www.google.com y devolvió HTML válido, por lo que parece haberse instalado correctamente.

¿Existen diferencias de sintaxis entre cURL para Windows y Linux, o hay alguna otra explicación de por qué el comando anterior falla en Windows?

Respuesta1

Lo más probable es que el problema sea que el símbolo del sistema de Windows interprete las comillas simples y dobles de manera diferente, no tiene nada que ver con curl.

Intente invertir las comillas simples y dobles en la sección JSON:

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

Respuesta2

Pondría el JSON en un archivo, por ejemplo json.txt, y lo usaría curl -d @json.txt para evitar el problema de manejo de comillas por parte del Shell.

Esto daría algo como

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

Si echas de menos un shell Unix,MSYS2es un buen sistema para agregar el conjunto habitual de herramientas a su máquina con Windows (aunque debe ser más reciente que Windows XP/Windows Server 2003).

información relacionada