1 返回28(TCP ERROR或者error: 28, SOAP-ENV:Receiver, No route to h)
可能存在的原因:
原因可能是账号密码错误,或者设备不在线的原因。导致TCP连接超时,或者onvif的地址写错导致的。
我当时是因为密码错误导致的,后面也试过onvif的地址传错导致的。
例如我又再一次遇到,结果ping摄像枪的ip时发现不在线。
2 返回12(This Account Has No Right To Do This Operation)
我们通过打印错误字符串看到,意思是此帐户没有权限执行此操作或者账号密码错误,在验证账号密码没问题后,那么就是权限的问题。
解决:
去到web界面,给对应用户添加足够的权限。
实际上我也不太清楚具体是缺少哪个权限导致的,不过我对比了一下报错的权限,好像是缺少 ‘系统信息’ 还是 ‘系统管理’ 这两个权限导致的,所以我使用了admin且给admin所有的权限去处理,然后就正常了。
疑问:很奇怪,我明明给了 ‘云台设置’ 这个权限,且看上图的红色箭头第一步,获取预置点列表接口是正常调用的,但是在goto到指定预置点就报权限不足,这个疑问就不展开下一步分析了,估计是goto时需要用到球机系统的一些权限,我们给足权限后能正常调用接口即可。
3 返回404
下面看到,我使用Onvif接口调用获取预置点列表,IPC设备返回了404,然后一堆html相关的标签,那些是IPC返回的内容,我将其打印到日志。那究竟是什么原因呢?
我遇到404的情况:
- 设备不在线;
- 设备不支持onvif,设备没有打开onvif设置,或者onvif的设备地址不存在。
而在这里的原因是设备没有打开onvif设置。我的是海康,所以登录到网页,开启onvif,如果没有onvif账号,也要添加。
注意onvif账号与web的登录账号是不一样的。
例如海康的这样开启onvif设置。