我正在撰寫一個 bash 腳本來與我的 ecobee 互動(查詢資訊和更改設定)。我已經完成了所有授權(訪問令牌和重繪 令牌),現在正嘗試從 ecobee 請求資訊。這個 json 引數串列是動態創建的。Developers API Doc 中的 curl 示例似乎都不起作用。
我嘗試將 json 分配給變數 ( ?json="$selection") 和檔案 ( ?json=@"$location")。我對 curl 的最新嘗試(對 json 進行硬編碼并轉義大括號)如下:
response=$(curl -s "https://api.ecobee.com/1/thermostat?json=\{"selection":\{"selectionType":"registered","selectionMatch":null,"includeRuntime":true,"includeSettings":true/}/}" -H "Content-Type: application/json;charset=UTF-8" -H "Authorization: Bearer $access_token")
我收到了一個空回應declare -- response=""
如果我從檔案中讀取 curl:
{"selection":{"selectionType":"registered","selectionMatch":null,"includeRuntime":true,"includeSettings":true}}
然后我收到:
response='{
"status": {
"code": 4,
"message": "Serialization error. Malformed json. Check your request and parameters are valid."
}
}'
我假設這是一個逃避問題?
任何人都可以提供任何見解嗎?同樣,我認為這將是簡單的部分。我正在使用 jq 來構建我的請求 json。可以更好地處理 json 的 curl 的其他替代方法?我僅限于 bash (這是我所知道的)
謝謝
uj5u.com熱心網友回復:
要將(任意)資料集成到 URL(或一般的 URI)中,您需要首先使用百分比編碼來準備它。
正如您所提到的使用jq來組合該資料,您可以添加@uri到您的 jq 過濾器以執行編碼,然后使用--raw-output(or -r) 選項正確輸出它。
例如,jq -r '@uri'應用于您的 JSON
{
"selection": {
"selectionType": "registered",
"selectionMatch": null,
"includeRuntime": true,
"includeSettings": true
}
}
會輸出
{"selection":{"selectionType":"registered","selectionMatch":null,"includeRuntime":true,"includeSettings":true}}
您可以在查詢字串 ?json=…中使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/427235.html
標籤:重击 卷曲 ecobee-api
