cURL 명령은 Linux에서는 실행되지만 Windows 2008에서는 실행되지 않습니다.

cURL 명령은 Linux에서는 실행되지만 Windows 2008에서는 실행되지 않습니다.

Windows 2008 Server에 cURL을 설치했으며 아래 명령을 실행하려고 합니다. 이 명령은 동일한 LAN에 있는 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"}

Windows에서 cURL을 테스트했습니다.http://www.google.com 유효한 HTML을 반환했으므로 올바르게 설치된 것 같습니다.

Windows와 Linux용 cURL 사이에 구문 차이가 있습니까? 아니면 Windows에서 위 명령이 실패하는 이유에 대한 다른 설명이 있습니까?

답변1

문제는 Windows 명령 프롬프트가 작은 따옴표와 큰 따옴표를 다르게 해석할 가능성이 높으며 컬과 관련이 없습니다.

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 쉘을 놓치면,MSYS2Windows 시스템에 일반적인 도구 그룹을 추가할 수 있는 좋은 시스템입니다(단, Windows XP/Windows Server 2003보다 최신 버전이어야 합니다).

관련 정보