如何用POST/GET调用车库门控制API?配置请求报错排查
车库门控制器API调用配置问题及解决方案
问题描述
我有一个本地部署的车库门控制器URL:https://MY-SERVER-URL/cc?dkey=abc&click=1,点击该URL即可触发车库门开关。现尝试通过HttpGarageDoors配件配置模拟此操作,配置代码如下:
初始配置
{ "name": "Garage Door", "simulateTimeOpening": 10, "simulateTimeOpen": 60, "simulateTimeClosing": 10, "closeAfter": 60, "request": { "url": "MY-SERVER-URL?", "method": "POST", "type": "JSON", "headers": [ { "name": "cc", "value": "?" } ], "params": [ { "name": "dkey", "value": "abc" }, { "name": "click", "value": "1" } ] }, "accessory": "HttpGarageDoors" }
修改dkey后的配置
{ "name": "Garage Door", "simulateTimeOpening": 10, "simulateTimeOpen": 60, "simulateTimeClosing": 10, "closeAfter": 60, "request": { "url": "MY-SERVER-URL?", "method": "POST", "type": "JSON", "headers": [ { "name": "cc", "value": "?" } ], "params": [ { "name": "dkey", "value": "azsxdcfv" }, { "name": "click", "value": "1" } ] }, "accessory": "HttpGarageDoors" }
配置后请求无法触发车库门开关,请问配置哪里出错了?另外,如何用POST/GET调用该API?
错误分析及修正
你的配置存在4个核心错误:
- URL路径错误:原控制器路径是
/cc,配置中URL写为MY-SERVER-URL?,缺少/cc路径,且末尾多余的?会导致参数拼接异常,正确URL应为https://MY-SERVER-URL/cc(如果是本地HTTP协议则替换为http)。 - 请求方法不匹配:点击URL触发的是
GET请求,你配置成了POST,控制器可能不支持POST方法,需改为GET。 - 不必要的类型和Header配置:原请求是普通GET参数请求,无需设置
type": "JSON",且cc是URL路径的一部分,不是HTTP Header,删除对应的headers配置。 - 参数拼接冗余:GET请求的params会自动拼接到URL末尾,无需在URL中手动加
?。
修正后的配置
{ "name": "Garage Door", "simulateTimeOpening": 10, "simulateTimeOpen": 60, "simulateTimeClosing": 10, "closeAfter": 60, "request": { "url": "https://MY-SERVER-URL/cc", "method": "GET", "params": [ { "name": "dkey", "value": "abc" }, { "name": "click", "value": "1" } ] }, "accessory": "HttpGarageDoors" }
GET/POST调用方式
GET调用(推荐,与原URL行为一致)
- 浏览器直接访问:
https://MY-SERVER-URL/cc?dkey=abc&click=1 - 命令行(curl):
curl "https://MY-SERVER-URL/cc?dkey=abc&click=1"
POST调用(仅当控制器支持POST时使用)
如果控制器支持接收URL参数的POST请求:
curl -X POST "https://MY-SERVER-URL/cc?dkey=abc&click=1"
如果控制器要求接收JSON格式的请求体:
curl -X POST -H "Content-Type: application/json" -d '{"dkey":"abc","click":"1"}' "https://MY-SERVER-URL/cc"
内容的提问来源于stack exchange,提问作者mnb
相关产品推荐
相关产品推荐

