• EasyNVR RTSP转RTMPHLS流媒体服务器前端构建之:关于接口调用常见的一些问题(401 Unauthorized)


    最近许多小伙伴咨询关于EasyNVR接口调用的问题,多半就是遇到权限的问题(401 Unauthorized)

    错误状态

    在此,基于自身对于EasyNVR接口的调用和一些用户的反馈的问题来对接口的调用进行一下说明:

    接口概述

    API采用Restful风格的Http协议,全部请求都使用Get/Post方式,字符不区分大小写。基本结构如下:

    http://<IP>:<Port>/api/<Version>/<Action>?<Param1>=<value>&<Param2>=<Value>&.....
    

    参数

    参数名称 定义 说明
    IP Platform Address IP地址
    Port Platform Port 通讯端口
    Version API Version API版本
    Action Action 执行的操作
    Param Action Parameter 操作所使用的参数,可以有多个参数,每个参数对应一个Value。
    Value Parameter Value 参数值,如果Value的字符串中出现&等特殊字符,则必须用””包住Value。

    返回值

    调用API会返回Json字符串,代表操作返回的结果

    {
       "EasyDarwin" : {
          "Body" : {
             ……
          },
          "Header" : {
             "CSeq" : "1",
             "ErrorNum" : "200",
             "ErrorString" : "Success OK",
             "MessageType" : "MSG_SC_API_ACK",
             "Version" : "1.0"
          }
       }
    }
    

    接口的调用

    许多小伙伴往往只是注重接口的功能,往往一上来就直接传参调接口,于是就出现开篇的401报错;在我们拿到接口文档后,我们可以先阅读一下文档,做到心中有数;

    在接口调用前先进行一下简单的说明:EasyNVR大部分的调用接口需要在cookie中携带token信息;对于这个token信息,是通过 login接口返回的。当我们成功请求接口: ”/api/v1/login?username=xxx&password=xxx“时,会返回一个token信息;

        {
           "EasyDarwin" : {
              "Body" : {
                 "Token" : "a19cb5f6e7d2449d8d24c8a0fc554ca7"
              },
              "Header" : {
                 "CSeq" : "1",
                 "ErrorNum" : "200",
                 "ErrorString" : "Success OK",
                 "MessageType" : "MSG_SC_SERVER_LOGIN_ACK",
                 "Version" : "1.0"
              }
           }
        }
    

    我们对获取到的token信息存储到cookie中;
    对于出现401,大多数情况莫过于是cookie 中tooken的携带、接口格式的错误、传递参数的错误。。。

    • 友情提示:有的大兄弟在请求login接口时就发现出现401权限限制;该接口中password是经过MD5加密的。

    在进行其他接口的请求时在request headers 的cookie会携带对应的tooken来进行请求。

    实例来进行展示一下:

    —– 首先引入jqueryCookie,用于设置cookie(如果有其他方法设置cookie可以不用引用)
        <script src="/adminlte-2.3.6/plugins/cookie/jquery.cookie.min.js"></script>
    
    —–通过ajax来进行卡接口的请求

    在没有调用接口进行设置前

    cookie值

    $.ajax({
                        type: "GET",
                        url: "api/v1/login",
                        data: {
                            username: username,
                            password: password
                        },
                        global: false,
                        success: function(data) {
                            try {
                                var ret = JSON.parse(data);
                                var token = ret.EasyDarwin.Body.Token;
                                $.cookie("token", token);
                                //将tooken设置进cookie中
                                $.cookie("username", username);
                            } catch (e) {
                                console.log(e);
                            }
                        },
    

    通过ajax请求成功后对获得数据的处理,将tooken出入cookie中:

    调用接口并进行cookie设置后:

    EasyNVR-成功设置cookie

    此时当我们进行其他接口的请求时,就会发现在request header 存在cookie tooken;并且可以成功请求接口。

    成功请求效果图

    关于EasyNVR

    EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发;

    详细说明:http://www.easydarwin.org/easynvr/

    获取更多信息

    邮件:support@easydarwin.org

    WEB:www.EasyDarwin.org

    Copyright © EasyDarwin.org 2012-2017

    EasyDarwin

  • 相关阅读:
    Mysql多表关系
    Linux权限
    Linux安装python环境脚本
    ZJNU 2136
    ZJNU 2135
    ZJNU 2133
    ZJNU 1699
    ZJNU 1542
    ZJNU 1538
    ZJNU 1535
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/10834048.html
Copyright © 2020-2023  润新知