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).