前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:关于接口调用常见的一些问题(401 Unauthorized)

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

作者头像
EasyNVR
发布2020-04-23 15:47:39
9950
发布2020-04-23 15:47:39
举报
文章被收录于专栏:EasyNVREasyNVR

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

错误状态
错误状态

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

接口概述

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

代码语言:javascript
复制
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字符串,代表操作返回的结果

代码语言:javascript
复制
{
   "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信息;

代码语言:javascript
复制
    {
       "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可以不用引用)
代码语言:javascript
复制
    <script src="/adminlte-2.3.6/plugins/cookie/jquery.cookie.min.js"></script>
—–通过ajax来进行卡接口的请求

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

cookie值
cookie值
代码语言:javascript
复制
$.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
EasyNVR-成功设置cookie

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

成功请求效果图
成功请求效果图

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口概述
    • 参数
      • 返回值
        • —– 首先引入jqueryCookie,用于设置cookie(如果有其他方法设置cookie可以不用引用)
        • —–通过ajax来进行卡接口的请求
    • 接口的调用
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档