在之前的博客《EasyNVR H5流媒体服务器方案架构设计之视频能力平台》中我们描述了EasyNVR的定位,作为一个能力平台来进行功能的输出:

也就是说,在通常情况下,我们将一套视频的应用平台划分为3个部分:硬件设备层视频能力平台层(PaaS层)视频应用平台层(SaaS层),EasyNVR的定位就是能力平台PaaS层,将各种硬件厂家的摄像机接入进来,再做能力发布,提供给应用SaaS层调用,本文档中的”第六章”中提供了EasyNVR的API接口文档,用户只需要根据API接入,就可以将各种摄像机接入到应用平台进行直播了!同时,我们的EasyNVR提供了一套完善的前端网页调用示例,您自己的视频应用前端可以参考此套前端框架来实现自己的业务展示,非常方便!

关于登录对接问题

EasyNVR在被外部应用系统调用时,EasyNVR提供了一套总的权限控制,也就是用户自己的应用系统需要隐式调用EasyNVR的登录接口,登录之后,获取到EasyNVR返回的token字段,再在后续的EasyNVR接口调用中cookies携带token信息,才能成功调用到EasyNVR的接口,如果调用EasyNVR的接口出现401错误返回,说明登录密码错误或者token已过期,那么我们需要再次隐式调用登录接口获取新的token,再继续下面的调用流程。注意:这个过程对于应用层的用户来说,是看不到的,属于应用层与视频层两个系统后台之间的对接,与用户的登录无关!

最近许多小伙伴咨询关于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来进行卡接口的请求

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

$.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设置后:

此时当我们进行其他接口的请求时,就会发现在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

EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之_关于接口调用常见的一些问题(401 Unauthorized)的更多相关文章

  1. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:通过接口获取实时信息

    对于动态网站,要实时更新网站的信息,通过接口来获取实时信息是一个必不可少的部分.EasyNVR可以接入IPC等前端设备,必须要实时获取到对应的IPC实时信息进行展示. 本篇主要说明Ajax来获取数据. ...

  2. EasyNVR摄像机无插件直播流媒体服务器前端构建之输入框样式的调整

    EasyNVR授权方式分为软件的授权和硬件授权两种方式,软件授权需要在软件输入永久邀请码可以激化永久授权 起初我们的界面设计是为了满足功能的需求就是 ,用户可以输入激活码提交,完成永久授权. 在实际的 ...

  3. EasyNVR摄像机网页无插件直播方案H5前端构建之:关于接口调用常见的一些问题(401 Unauthorized)

    背景分析 最近在使用EasyNVR的过程中,很多小伙伴咨询关于接口调用的问题,初步判断应该是遇到权限问题(401 Unauthorized).EasyNVR为第三方系统和应用提供了标准的API接口,方 ...

  4. EasyNVR RTSP转HLS(m3u8+ts)流媒体服务器前端构建之:bootstrap-datepicker日历插件的实时动态展现

    EasyNVR中有对录像进行检索回放的功能,且先抛开录像的回放,为了更好的用户体验过.让用户方便快捷的找到对应通道对应日期的录像视频,是必须的功能. 基于上述的需求,为前端添加一个日历插件,在日历上展 ...

  5. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:使用BootstrapPagination以分页形式展示数据信息

    上一篇介绍通过接口来获取数据,本篇将介绍如何以分页形式展示出接口获取到的数据 获取到的数据往往会很多,为了追去页面的美观和方便用户的检索,需要进行分页的展示: EasyNVR可接如多通道,当我们的通道 ...

  6. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:bootstrap弹窗功能的实现

    在web前端的网页设计中,为了展示出简洁的网页风格和美观的效果,往往就会使用弹窗效果 在EasyNVR前端页面录像检索功能时,必然会播放录像,如果单独为播放录像文件排一个界面,用户在使用上会更加繁琐, ...

  7. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:内部搜索功能的实现

    上一篇介绍了处理接口获取的数据,本篇将介绍如何在接收到的数据中搜索出自己符合条件的数据: 为了页面的美观,我们往往会以分页的形式来进行数据的展示.但是,当需要展示出来的数据太多的时候,我们很难迅速的找 ...

  8. EasyNVR RTSP摄像机转HLS直播服务器中使用Onvif协议控制预置位

    EasyNVR支持预置位控制,包括转到指定预置位,设置指定预置位,删除指定预置位 预置位在安防领域有较为普遍的应用,可以进行很多既定位置的跳转,很方便 之前我们说过如何用Onvif协议进行设备的发现, ...

  9. windows平台最简单的rtmp/hls流媒体服务器

    feature: rtmp/hls live server for windows, double click to run,don't need config. run and quit: doub ...

随机推荐

  1. python中mp3转wav(Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work")

    1.下载pydub:pip install pydub 2.下载与操作系统一致的ffmpeg:http://ffmpeg.org/download.html 3.解压后将下载的ffmpeg下的bin目 ...

  2. Ruby on rails初体验(二)

    体验一中添加了一个最基本的支架和一个简单的数据迁移,实现了一个基本的增删改查的功能列表.体验二中要在次功能上继续丰满一下功能.实现如下效果: 在每个公司中都包含有不同的部门,按照体验一中的方法,添加一 ...

  3. 基于WPF系统框架设计(6)-整合MVVM框架(Prism)

    应用场景 我们基础的框架已经搭建起来了,现在整合MVVM框架Prism,在ViewModel做一些逻辑处理,真正把界面设计分离出来. 这样方便我们系统开发分工合作,同时提高系统可维护性和灵活性. 具体 ...

  4. new子类会先运行父类的构造函数

    发现子类构造函数运行时,先运行了父类的构造函数.为什么呢? 原因:子类的所有构造函数中的第一行,其实都有一条隐身的语句super(); super(): 表示父类的构造函数,并会调用于参数相对应的父类 ...

  5. [深入浅出iOS库]之数据库 sqlite

    一,sqlite 简介 前面写了一篇博文讲如何在 C# 中使用 ADO 访问各种数据库,在移动开发和嵌入式领域也有一个轻量级的开源关系型数据库-sqlite.它的特点是零配置(无需服务器),单磁盘文件 ...

  6. 在html里网页中嵌入优酷的视频

    <html> <embed src="http://player.youku.com/player.php/sid/XMjAzOTk4NjI4/v.swf" qu ...

  7. 新学到的linux命令

    whatis xxx whatis ls 会返回一个ls的简要说明,可以简单的告诉你该命令的作用,不用man去看一大堆没啥用的英文 HISTTIMEFORMAT="%d/%m/%y %T & ...

  8. MetaQ简单实用demo

    Metaq的生产者代码 import java.io.BufferedReader; import java.io.InputStreamReader; import com.taobao.metam ...

  9. 2016.10.18kubernetes 的8080和6443端口的区别与联系

    由看过的资料知道,可以使用kubectl,client libraries和REST请求来访问api.   来自官方资料: By default the Kubernetes APIserver se ...

  10. 关于阿里 weex 的使用与案例

    1. 阿里宣布开源Weex http://mp.weixin.qq.com/s?__biz=MzA4MjA0MTc4NQ==&mid=504089541&idx=1&sn=3a ...