[英]cURL: Invalid JSON when sending stdin as data
我可以通過 cURL 使用以下命令控制飛利浦 Hue 燈:
curl -X PUT --data '{"on":true}' "http://<bridgeip>/api/<key>/lights/7/state";
我正在使用函數生成有效負載,因此我想將其通過管道傳輸到 cURL(以從 stdin 獲取其輸入):
onString='{"on":true}';
echo "$onString" | curl -X PUT --data - "http://<bridgeip>/api/<key>/lights/7/state";
但這會引發錯誤:“正文包含無效的 json”
我不明白的是這有效:
onString='{"on":true}';
curl -X PUT --data "$onString" "http://<bridgeip>/api/<key>/lights/7/state";
誰能解釋一下?
(順便說一句,當我將函數的輸出通過管道傳輸到cat
,結果字符串符合預期,並且當復制並粘貼到 jsonlint 中時,會檢查出有效的 JSON。)
--data -
不從標准輸入中獲取數據,它只是發送一個文字-
,
要實際從標准輸入中獲取數據,請使用--data @-
(仔細想想,-- --data-binary @-
可能是一個更好的主意,我認為在 Windows 上運行時換行會有所不同,但我不是 100% 確定)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.