EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:关于接口调用常见的一些问题(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

 

 
posted on 2017-09-27 14:40  EasyNVR  阅读(256)  评论(0编辑  收藏  举报