如何使用CURL发送PUT JSON请求控制LinoVision POE摄像头PTZ功能
问题根因排查&正确请求方式
1 之前尝试失败的核心原因
- 缺少必要请求头:绝大多数嵌入式设备的JSON接口要求请求头携带
Content-Type: application/json,否则不会解析Body中的JSON数据,即使返回成功也不会执行对应操作 - 结构体参数不全:官方要求的
PTZCommandInfo结构体包含PTZCmd、Para1、Para2、Para3四个字段,部分设备要求所有字段必须传值,缺省会导致指令不生效 - GET请求参数无效:官方明确说明PUT/POST类接口的参数需放在HTTP Body中,URL拼接查询参数的方式不会被识别
2 正确CURL请求示例
curl -X PUT \ -H "Content-Type: application/json" \ -d '{"PTZCmd":2817,"Para1":0,"Para2":0,"Para3":0}' \ http://172.16.5.91/LAPI/V1.0/Channels/0/PTZ/PTZCtrl
指令说明:2817是补光灯开启指令0x0B01对应的十进制值,三个Para参数填默认值0即可。
3 如仍未生效可依次排查以下点
- 通道号校验:官方接口URL模板中
Channels后需填写正确的通道号,当前使用的是0,可尝试改为1测试(部分设备通道号从1开始计数) - 权限校验:多数POE摄像头API需要先登录获取会话Token,需要先调用登录接口
/LAPI/V1.0/System/Security/Login传入设备的用户名密码,获取返回的Token后,在后续请求头中添加X-Auth-Token: 你获取到的Token值 - 协议校验:部分设备默认禁用HTTP端口的控制权限,可将URL改为HTTPS开头,curl添加
-k参数跳过证书校验测试 - 硬件能力校验:部分低配型号的补光灯仅支持移动侦测触发、本地光敏触发,不支持API手动控制,可查阅对应型号的规格手册确认
内容的提问来源于stack exchange,提问作者lthrhx
相关产品推荐
相关产品推荐

