我在webman上装了gatewayWorker插件,起了个tcp服务用于监听摄像头主动注册和后续和摄像头的交互。现在的情况是服务端收到了PUT的设备基础信息,按文档的交互流程上的话我还需要用建立起来的这条tcp连接去请求设备接口(/SDCAPI/V1.0/MiscIaas/System),接口采用HTTP Digest的认证方式。这个请求我应该咋写,有大佬给个思路吗?下面是相关文档截图和日志信息
是可以的 创建一个tcp服务就行了 你这个摄像头是什么品牌型号啊 看起来对二开支持的挺好的 买一个研究研究
摄像头是华为的D3250-10-SIU;我现在是用webman的自定义进程监听http,能收到摄像头put过来的基础信息,就是用起来感觉不好用,比如给特定设备推信息这项都要自己实现。我看文档GatewayWorker好像不能监听http
可以的,刚用GatewayWorker试了下
方便发一下摄像头文档看看吗?还有购买链接,多谢
可以的,给个邮箱
365581323@qq.com
已发
谢谢
<?php // 设备接口URL $url = 'http://设备IP地址/SDCAPI/V1.0/MiscIaas/System'; // 设备基础信息 $deviceInfo = [ 'deviceId' => '设备ID', 'deviceName' => '设备名称', // 其他设备基础信息字段 ]; // 构建HTTP Digest认证头部 $digestHeader = generateDigestHeader('用户名', '密码', $url, 'GET'); // 发送请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [$digestHeader]); $response = curl_exec($ch); curl_close($ch); // 处理响应 if ($response) { // 响应成功 echo "接收到设备接口的响应:" . $response; } else { // 响应失败 echo "发送请求失败"; } /** * 生成HTTP Digest认证头部 * @param string $username 用户名 * @param string $password 密码 * @param string $url 请求的URL * @param string $method 请求方法(GET, POST, PUT等) * @return string */ function generateDigestHeader($username, $password, $url, $method) { // 生成随机的nonce和cnonce $nonce = md5(uniqid()); $cnonce = md5(uniqid()); // 生成HA1和HA2 $ha1 = md5($username . ':' . 'Digest' . ':' . $password); $ha2 = md5($method . ':' . $url); // 生成response $response = md5($ha1 . ':' . $nonce . ':' . $cnonce . ':' . 'auth' . ':' . $ha2); // 构建认证头部 $digestHeader = 'Authorization: Digest '; $digestHeader .= 'username="' . $username . '", '; $digestHeader .= 'realm="Digest", '; $digestHeader .= 'nonce="' . $nonce . '", '; $digestHeader .= 'uri="' . $url . '", '; $digestHeader .= 'cnonce="' . $cnonce . '", '; $digestHeader .= 'response="' . $response . '", '; $digestHeader .= 'algorithm="MD5", '; $digestHeader .= 'qop=auth'; return $digestHeader; }
将示例代码中的占位符替换为实际的设备信息和认证信息
你这是服务端生成的摘要认证, 客户端直接传账号密码就行了
是要基于已创建的长连接和设备交互吧?
https://www.workerman.net/q/11278 看这个
guzzle 很简单 new GuzzleClient(['base_uri' => $base_uri,'auth' => ['admin', 'hik123456', 'digest']]);
这个更方便
是在设备建立起的长连接上做双向交互
是可以的 创建一个tcp服务就行了 你这个摄像头是什么品牌型号啊 看起来对二开支持的挺好的 买一个研究研究
摄像头是华为的D3250-10-SIU;我现在是用webman的自定义进程监听http,能收到摄像头put过来的基础信息,就是用起来感觉不好用,比如给特定设备推信息这项都要自己实现。我看文档GatewayWorker好像不能监听http
可以的,刚用GatewayWorker试了下
方便发一下摄像头文档看看吗?还有购买链接,多谢
可以的,给个邮箱
365581323@qq.com
已发
谢谢
将示例代码中的占位符替换为实际的设备信息和认证信息
你这是服务端生成的摘要认证, 客户端直接传账号密码就行了
是要基于已创建的长连接和设备交互吧?
https://www.workerman.net/q/11278 看这个
guzzle 很简单 new GuzzleClient(['base_uri' => $base_uri,'auth' => ['admin', 'hik123456', 'digest']]);
这个更方便
是在设备建立起的长连接上做双向交互