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青犀视频云边端智能分析平台欢迎大家试用。

原文地址:https://www.cnblogs.com/EasyNVR/p/14086920.html