curl命令无数据/错误返回问题求助(Slate API)
问题根源与解决方法
你的curl命令出现异常的核心原因是shell对URL中的&符号做了特殊解析:
- 在bash等shell环境中,
&是后台执行命令的分隔符,原命令里的&cmd=service&output=json被shell拆分成了三个独立部分:- 第一个后台进程:
curl -H "Authorization: Bearer <NOT DISPLAYED FOR THIS POST>" -o /home/admin/result.json https://www.endpoint.com/manage/query/run?id=55408 - 第二个后台进程:
cmd=service - 无效的命令片段:
output=json
- 第一个后台进程:
- 这导致curl实际只请求了不完整的URL,自然无法获取数据,进而出现挂起的情况。
解决办法
用以下两种方式之一修正命令:
方式1:用双引号包裹完整URL
curl -H "Authorization: Bearer <NOT DISPLAYED FOR THIS POST>" -o /home/admin/result.json "https://www.endpoint.com/manage/query/run?id=55408&cmd=service&output=json"
方式2:转义每个&符号
curl -H "Authorization: Bearer <NOT DISPLAYED FOR THIS POST>" -o /home/admin/result.json https://www.endpoint.com/manage/query/run?id=55408\&cmd=service\&output=json
修正后,curl会发送完整的请求URL,和你在浏览器中访问的地址一致,就能正常获取并写入数据了。
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

