Instalei o cURL no Windows 2008 Server e estou tentando executar o comando abaixo. Este comando é executado bem em uma máquina Ubuntu na mesma LAN, mas quando o executo no Windows recebo estes erros:
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"}
Eu testei cURL no Windows comhttp://www.google.com e retornou HTML válido, então parece ter sido instalado corretamente.
Existem diferenças de sintaxe entre cURL para Windows e Linux ou há alguma outra explicação para o motivo pelo qual o comando acima falha no Windows?
Responder1
O problema é mais provável que o prompt de comando do Windows interprete as aspas simples e duplas de maneira diferente, e não tenha nada a ver com curl.
Tente inverter as aspas duplas e simples na seção 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
Responder2
Eu colocaria o JSON em um arquivo, por exemplo json.txt
, e usaria curl -d @json.txt
para evitar o problema de manipulação de cotações pelo shell.
Isso daria 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
Se você perder um shell Unix,MSYS2é um bom sistema para adicionar o conjunto usual de ferramentas à sua máquina Windows (embora ele deva ser mais recente que o Windows XP/Windows Server 2003).