Ecobee:响应仅返回部分结果

时间:2016-05-28 17:18:21

标签: json google-apps-script ecobee

使用Google Apps脚本尝试使用Ecobee API与我的恒温器通话。在下面的代码中,json的值为"{ "status": { "code": 0, "message": "" } }"。要获得正确的完整回复,请参阅问题后面的curl结果。

出于某种原因,response仅从服务器返回的三个结果中获取最终元素(statuspagethermostatList和{ {1}})。

我错过了什么?

Google Apps脚本如下:

status

使用function getSettings() { var response = fetchSettings(); var json = response.getContentText(); var data = JSON.parse(json); // response, json, and data only show `status` result } function fetchSettings() { try { var headers = { 'Authorization': 'Bearer AUTH_TOKEN' }; var payload = { 'selection' : { 'selectionType':'registered', 'selectionMatch': '', 'includeRuntime': 'true' } }; var options = { 'method': 'get', 'headers': headers, 'contentType': 'text/json', 'payload': JSON.stringify(payload); }; var URL = 'https://api.ecobee.com/1/thermostat?format=json' return UrlFetchApp.fetch(URL,options); } catch(e) { return e; } } 如下:

curl

我得到了完整的结果。

curl -s -H 'Content-Type: text/json' -H 'Authorization: Bearer AUTH_TOKEN' 'https://api.ecobee.com/1/thermostat?format=json&body=\{"selection":\{"selectionType":"registered","selectionMatch":"",includeRuntime":true\}\}'

1 个答案:

答案 0 :(得分:2)

我认为问题是UrlFetchApp不支持使用get方法作为查询字符串发送有效负载。我认为这是UrlFetchApppoor design on the part of the Ecobee API的正确设计。我通过如下在查询字符串中发送JSON来制作kluge解决方法。

var URL = 'https://api.ecobee.com/1/thermostat?body='+encodeURIComponent(JSON.stringify(payload));