2

Я установил 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?

2 ответа2

1

Я бы поместил 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).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .