You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 2008 Server中cURL命令执行失败问题求助

问题根源与解决方案

这个问题我碰到过,本质是Windows命令提示符(CMD)和Linux Shell在引号处理逻辑上的差异,和cURL本身的版本关系不大。

你在Ubuntu上能用是因为bash等Linux Shell会把单引号'当作字符串的边界,把整个JSON内容当成一个完整的参数传给-d。但Windows CMD不认识单引号的作用,它会把单引号当成普通字符,直接拆分你写的JSON内容——比如把{"entity_id"这些当成了单独的参数,curl误以为这些是要访问的主机,所以才会报“Could not resolve host”的错误,同时JSON格式也被拆坏了,自然返回“Data should be valid JSON”。

给你两种靠谱的解决办法:

办法1:适配CMD的引号规则

把外层的单引号换成双引号,同时把JSON内部的双引号用\"转义(CMD里用反斜杠转义双引号),修改后的命令如下:

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:用PowerShell执行原命令

如果你的Windows系统有PowerShell,直接用它来运行你原来的Linux风格命令就行——PowerShell支持单引号作为字符串分隔符,逻辑和Linux Shell一致,不需要修改任何内容,直接执行就能正常工作。

补充说明:你能正常访问谷歌说明curl安装完全没问题,就是命令行环境的引号解析差异导致的问题,按上面的办法改了就能解决。

内容的提问来源于stack exchange,提问作者Ian M

火山引擎 最新活动