Я установил cURL на Windows 2008 Server и пытаюсь выполнить команду ниже. Эта команда отлично выполняется на машине Ubuntu в той же локальной сети, но когда я запускаю ее в Windows, я получаю эти ошибки:
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"}
Я протестировал cURL на Windows с помощьюhttp://www.google.com и он вернул корректный HTML, так что, похоже, установка прошла правильно.
Существуют ли различия в синтаксисе cURL для Windows и Linux или есть какое-то другое объяснение, почему приведенная выше команда не работает в Windows?
решение1
Проблема, скорее всего, в том, что командная строка Windows по-разному интерпретирует одинарные и двойные кавычки, а не в curl.
Попробуйте поменять местами двойные и одинарные кавычки в разделе 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
решение2
Я бы поместил JSON в файл, например json.txt
, и использовал бы его curl -d @json.txt
, чтобы избежать проблем с обработкой кавычек оболочкой.
Это даст что-то вроде
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
Если вам не хватает оболочки Unix,MSYS2— это хорошая система для добавления обычного набора инструментов на ваш компьютер с Windows (хотя он должен быть новее, чем Windows XP / Windows Server 2003).