• RTSP协议视频智能分析/内容识别平台EasyNVR安防视频云服务关于POST接口C#调用的例子介绍说明


    TSINGSEE青犀视频云边端架构视频智能分析平台EasyNVR、EasyCVR等具备视频流拉取、转码、分发的功能,并且我们提供丰富的API接口进行二次开发。

    最近有一个用户在用C#调用EasyNVR的/api/v1/addlabel 和/api/v1/deletelabel 分组管理API接口一直调用不成功,总是返回401错误,因此咨询我们应该如何正确调用。下面我们来具体实现一下整个调用过程。

    1、首先看下接口定义,如下图:

    2、封装一个HTTP POST函数(Post(string url, Dictionary<string, string> dic)),如下:

             /// <summary>
             /// 指定Post地址使用Get 方式获取全部字符串
             /// </summary>
             /// <param name="url">请求后台地址</param>
             /// <returns></returns>
             public static string Post(string url, Dictionary<string, string> dic)
             {
                 string result = "";
                 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                 req.Method = "POST";
                 req.Headers.Add("Cookie", "token=8uTcJMAMg");
                 req.ContentType = "application/x-www-form-urlencoded";
                 #region 添加Post 参数
                 StringBuilder builder = new StringBuilder();
                 int i = 0;
                 foreach (var item in dic)
                 {
                     if (i > 0)
                         builder.Append("&");
                     builder.AppendFormat("{0}={1}", item.Key, item.Value);
                     i++;
                 }
                 byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
                 req.ContentLength = data.Length;
                 using (Stream reqStream = req.GetRequestStream())
                 {
                     reqStream.Write(data, 0, data.Length);
                     reqStream.Close();
                 }
                 #endregion
                 HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                 Stream stream = resp.GetResponseStream();
                 //获取响应内容
                 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                 {
                     result = reader.ReadToEnd();
                 }
                 return result;
             }
    
    

    3、调用接口实现,如下

     //删除
     ///api/v1/deletelabel string Url = "http://" + CLass.XMLOperate.URL + ":" + CLass.XMLOperate.PORT + "/api/v1/deletelabel";
     Dictionary<string, string> parametersdelete = new Dictionary<string, string>();
     //参数列表 parametersdelete.Add("labelids", "[2]");
     string OutString = CLass.HTTP.Post(Url, parametersdelete);
     //添加分组
     ///api/v1/addlabel Url = "http://" + CLass.XMLOperate.URL + ":" + CLass.XMLOperate.PORT + "/api/v1/addlabel";
     Dictionary<string, string> parametersadd = new Dictionary<string, string>();
     //参数列表 parametersadd.Add("labelname", "nihao");
     string mid = "[{"ChannelId":"1"},{"ChannelId":"2"}]";
     parametersadd.Add("channels", mid); OutString = CLass.HTTP.Post(Url, parametersadd);
    

    其中URL是通过读配置文件和字符串拼接起来的,注意看下键值对的赋值

    A、parametersdelete.Add(“labelids”, “[2]”);
    B、parametersadd.Add(“labelname”, “nihao”); string mid = “[{“ChannelId”:“1”},{“ChannelId”:“2”}]”; parametersadd.Add(“channels”, mid);

    特别需要注意,键值对中需要有中括号括起来。接口文档可点击此处:http://demo.easynvr.com:10800/apidoc/,如果大家还想了解更多视频相关解决方案,欢迎联系我们,TSINGSEE青犀视频云边端智能分析平台欢迎大家试用。

  • 相关阅读:
    延迟任务
    xxl-job 执行器调度
    Linux查看日志定位问题
    docker 远程连接
    sqlserver的备份和恢复 命令非计划任务
    创建带包含列的索引 sqlserver
    exec sp_executesql (sqlsugar使用中的坑)的坑。执行sql非常慢
    vue elementui的表单设计器
    将docker容器的配置导出为docker-compose.yml
    异步通信,rpc通信的笔记
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/14086920.html
Copyright © 2020-2023  润新知