O comando cURL é executado no Linux, mas não no Windows 2008

2

Instalei o cURL no Windows 2008 Server e estou tentando executar o comando abaixo. Esse comando executa bem em uma máquina Ubuntu na mesma LAN, mas quando eu o executo no Windows, recebo esses 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 com o link e ele retornou um HTML válido, por isso parece ter sido instalado corretamente.

Existem diferenças de sintaxe entre cURL para Windows e Linux, ou há alguma outra explicação para o fato do comando acima falhar no Windows?

    
por Ian M 02.02.2018 / 12:23

2 respostas

1

O problema é mais provável que o prompt de comando do windows interprete as aspas simples e duplas de maneira diferente, não tenha nada a ver com o curl.

Tente reverter 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
    
por 02.02.2018 / 12:28
1

Eu colocaria o JSON em um arquivo, por exemplo json.txt e use curl -d @json.txt para evitar o problema de manipulação de cotações pelo shell.

Isso daria algo parecido com

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, o MSYS2 é um ótimo sistema para adicionar o grupo de ferramentas à sua máquina Windows (ele deve ser mais recente que o Windows XP / Windows Server 2003).

    
por 02.02.2018 / 12:27