在之前的博客《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. Facebook为什么使用PHP编程语言?

    当日本计算机科学家松本行弘决定创造一种名叫 Ruby (这种技术支撑了 Twitter.Hulu以及其他许多现代 Web 流行网站) 的程序语言时,他是从 1966 年一部名为 Babel-17 的科 ...

  2. ios开发某个页面横不过来屏幕的时候

    某一个页面需要横屏,其他的页面任然保持竖屏需要以下关键的几个步骤: 1.修改系统代理方法的返回值 -(UIInterfaceOrientationMask)application:(UIApplica ...

  3. Codeforces Round #466 (Div. 2) B. Our Tanya is Crying Out Loud[将n变为1,有两种方式,求最小花费/贪心]

    B. Our Tanya is Crying Out Loud time limit per test 1 second memory limit per test 256 megabytes inp ...

  4. Network| ICMP

    Internet Control Message Protocol,ICMP是网路协议族的核心协议之一.它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管 ...

  5. Write a function that generates one of 3 numbers according to given probabilities

    You are given a function rand(a, b) which generates equiprobable random numbers between [a, b] inclu ...

  6. 百度前端开发规范 by fex-team

    github:https://github.com/fex-team/styleguide 离线版本: 链接:http://pan.baidu.com/s/1gfr857l 密码:cvk3 注:只支持 ...

  7. Python 集成开发环境(IDE)

      DiscoverSDK网站进行了一次调查 - 什么是最好的Python IDE,这里是调查的结果 ​​​Python是一种非常流行的开源编程语言.得益于无尽的模块选项,Python今天广泛用于脚本 ...

  8. HDU - 1686 Oulipo KMP匹配运用

    id=25191" target="_blank" style="color:blue; text-decoration:none">HDU - ...

  9. 同步数据库数据到ES中代码

    多节点部署保证HA,分布式锁代码 public class DistributedLock implements Watcher,Runnable{ private static final Logg ...

  10. 【重点突破】——Drag&Drop拖动与释放

    一.引言 在学习HTML5新特性的时候,学到了Drag&Drop这两种拖放API,这里根据拖动的是“源对象”还是“目标对象”做两个小练习,主要是为了理解与应用HTML5为拖放行为提供的7个事件 ...