寻求AXIS Entry Manager通过VAPIX API创建用户的技术支持
解决AXIS VAPIX API创建用户的请求格式错误问题
错误原因分析
- "No action specified"错误:你同时设置了
CURLOPT_POSTFIELDS为数组,又指定Content-Type: application/json,curl会自动将数组编码为multipart/form-data格式,与你设置的请求头冲突,导致API无法识别action参数。 - 解析错误:同样因为请求体格式不匹配,API期望JSON数据,但收到的是multipart编码内容,解析
User字段时出现边界错误。
修正后的PHP cURL代码
$url = 'http://myip/vapix/pacs/'; $username = 'root'; $password = '*****'; // 构造包含action和用户数据的完整JSON payload $payload = [ "action" => "axudb:SetUser", "User" => [ "Name" => "Freeman, Gordon", "Description" => "", "Attribute" => [ [ "Name" => "FirstName", "Value" => "Gordon" ], [ "Name" => "LastName", "Value" => "Freeman" ] ] ] ]; $jsonPayload = json_encode($payload); $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_POST, true); // 直接传递JSON字符串,而非数组 curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonPayload); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); // 可选:开启verbose模式查看详细请求/响应,方便排查 // curl_setopt($ch, CURLOPT_VERBOSE, true); $response = curl_exec($ch); if (curl_errno($ch)) { echo 'cURL Error: ' . curl_error($ch); } else { echo "Response: \n$response"; } curl_close($ch);
额外排查建议
- 调整用户结构:如果仍有解析错误,检查
Attribute字段格式是否符合API要求,部分版本可能要求用键值对对象而非数组,尝试修改为:"Attribute" => [ "FirstName" => "Gordon", "LastName" => "Freeman" ] - 查看请求详情:开启
CURLOPT_VERBOSE,确认实际发送的请求头和body是否正确,确保Content-Type为application/json,且JSON格式无语法错误。 - 核对API版本:不同AXIS设备的VAPIX API版本可能存在差异,参考设备对应的官方文档,确认
axudb:SetUser动作的参数规范。
内容的提问来源于stack exchange,提问作者mmmttzz
相关产品推荐
相关产品推荐

