ESP32联动Android应用:Pusher推送通知curl命令执行失败求助
解决Windows CMD中curl推送通知命令的执行错误
我一眼就看出问题所在了——你是在Windows的命令提示符(CMD)里执行了Unix/Linux风格的curl命令,这俩环境的语法规则差异导致了报错,具体原因和修复方案如下:
错误原因分析
- 换行符不兼容:Unix系统用
\作为命令换行续行符,但Windows CMD不认这个符号,所以你每一行的参数(比如-H、-X)都被当成了独立的命令执行,自然会提示“不是内部或外部命令”。 - 引号规则不同:CMD里字符串必须用双引号包裹,单引号会被当作普通字符处理,而你的JSON数据用了单引号,这会导致CMD解析JSON时出错。
修复后的命令写法
方式1:写成单行命令(最简单)
把所有参数合并到一行,同时把JSON里的双引号用\转义(CMD里双引号需要转义才能被正确识别为字符串的一部分):
curl -H "Content-Type: application/json" -H "Authorization: Bearer **Secret Key**" -X POST "https://**Instance ID**.pushnotifications.pusher.com/publish_api/v1/instances/**Instance ID**/publishes" -d "{\"interests\":[\"hello\"] ,\"fcm\":{\"notification\":{\"title\":\"Hello\", \"body\":\"Hello, world!\"}}}"
方式2:用CMD的续行符换行(可读性更好)
如果想保持多行格式,CMD的续行符是^(注意^后面不能有空格,直接换行),同时同样要转义JSON里的双引号:
curl -H "Content-Type: application/json" ^ -H "Authorization: Bearer **Secret Key**" ^ -X POST "https://**Instance ID**.pushnotifications.pusher.com/publish_api/v1/instances/**Instance ID**/publishes" ^ -d "{\"interests\":[\"hello\"] ,\"fcm\":{\"notification\":{\"title\":\"Hello\", \"body\":\"Hello, world!\"}}}"
额外注意事项
- 记得把命令里的
**Secret Key**和**Instance ID**替换成你自己的实际密钥和实例ID。 - 确认curl已经正确配置到环境变量里(你已经做了这一步,所以curl命令能被识别,没问题)。
内容的提问来源于stack exchange,提问作者Ricky
相关产品推荐
相关产品推荐

