云视讯API(小鱼视频)公用c#函数方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36535245/article/details/82151872
             /// <summary>
        ///  get方式请求url
        /// </summary>
        /// <param name="serviceAddress">请求地址</param>
        /// <returns></returns>
        public string GetFunction(string serviceAddress)
        {
            System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(serviceAddress);
            request.Method = "GET";
            //request.ContentType = "text/html;charset=UTF-8";
            System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
            System.IO.Stream myResponseStream = response.GetResponseStream();
            System.IO.StreamReader myStreamReader = new System.IO.StreamReader(myResponseStream, System.Text.Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            return retString;
        }


       /// <summary>
        /// 从url下载数据
        /// </summary>
        /// <param name="Url"></param>
        /// <param name="FileName"></param>
        public static void DownLoad(string Url, string FileName)
        {
            bool Value = false;
            System.Net.WebResponse response = null;
            Stream stream = null;
            System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(Url);
            response = request.GetResponse();
            stream = response.GetResponseStream();
            if (!response.ContentType.ToLower().StartsWith("text/"))
            {
                Value = SaveBinaryFile(response, FileName);
            }
        }


      /// <summary>
        /// post
        /// </summary>
        /// <param name="url"></param>
        /// <param name="parms"></param>
        /// <param name="encoding"></param>
        /// <param name="contentType"></param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static string PostResponse(string url, string parms, string encoding, string contentType = "text/xml", int timeOut = 60000)
        {
            var result = string.Empty;
            try
            {

                var mRequest = (HttpWebRequest)WebRequest.Create(url);
                //相应请求的参数
                var data = Encoding.GetEncoding(encoding).GetBytes(parms);
                mRequest.Method = "Post";
                mRequest.ContentType = contentType;
                mRequest.ContentLength = data.Length;
                mRequest.Timeout = timeOut;
                mRequest.KeepAlive = true;
                mRequest.ProtocolVersion = HttpVersion.Version10;
                //请求流
                var requestStream = mRequest.GetRequestStream();
                requestStream.Write(data, 0, data.Length);
                requestStream.Close();
                //响应流
                var mResponse = mRequest.GetResponse() as HttpWebResponse;
                var responseStream = mResponse.GetResponseStream();
                if (responseStream != null)
                {
                    var streamReader = new StreamReader(responseStream, Encoding.GetEncoding(encoding));
                    //获取返回的信息
                    result = streamReader.ReadToEnd();
                    streamReader.Close();
                    responseStream.Close();
                }
            }
            catch (Exception ex)
            {
                result = "获取数据失败,请重试!" + url + ex.ToString();
            }
            return result;
        }

        /// <summary>
        /// 将二进制文件保存到磁盘
        /// </summary>
        /// <param name="response">文件</param>
        /// <param name="FileName">地址</param>
        /// <returns></returns>
        private static bool SaveBinaryFile(System.Net.WebResponse response, string FileName)
        {
            bool Value = true;
            byte[] buffer = new byte[1024];
            try
            {
                if (File.Exists(FileName))
                    File.Delete(FileName);
                Stream outStream = System.IO.File.Create(FileName);
                Stream inStream = response.GetResponseStream();
                int l;
                do
                {
                    l = inStream.Read(buffer, 0, buffer.Length);
                    if (l > 0)
                        outStream.Write(buffer, 0, l);
                }
                while (l > 0);
                outStream.Close();
                inStream.Close();
            }
            catch
            {
                Value = false;
            }
            return Value;
        }




        /// <summary>
        /// HmacSHA256加密后Base64
        /// </summary>
        /// <param name="message">待加密字符</param>
        /// <param name="secret">秘钥</param>
        /// <returns>加密后签名</returns>
        private static string HmacSHA256(string message, string secret)
        {
            secret = secret ?? "";
            var encoding = new System.Text.UTF8Encoding();
            byte[] keyByte = encoding.GetBytes(secret);
            byte[] messageBytes = encoding.GetBytes(message);
            using (var hmacsha256 = new System.Security.Cryptography.HMACSHA256(keyByte))
            {
                byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
                return Convert.ToBase64String(hashmessage);
            }
        }

        /// <summary>
        /// 将参数按ASCII顺序编码 同时给key和value进行UrlEncode
        /// </summary>
        /// <param name="paramsMap"></param>
        /// <returns></returns>
        public static String getParamSrc(Dictionary<string, string> paramsMap)
        {
            var vDic = (from objDic in paramsMap orderby objDic.Key ascending select objDic);
            System.Text.StringBuilder str = new System.Text.StringBuilder();
            foreach (KeyValuePair<string, string> kv in vDic)
            {
                string pkey = System.Web.HttpUtility.UrlEncode(kv.Key);
                string pvalue = System.Web.HttpUtility.UrlEncode(kv.Value);
                str.Append(pkey + "=" + pvalue + "&");
            }


            String result = str.ToString().Substring(0, str.ToString().Length - 1);
            return result;
        }
  /// <summary>
        ///  API发送DELETE请求,返回状态:200成功,201失败
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static int ApiDelete(string url)
        {
            System.Net.HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
            req.Method = "DELETE";
            req.ServicePoint.Expect100Continue = false;
            req.ServicePoint.UseNagleAlgorithm = false;
            req.Timeout = 60000;
            req.ContentType = "application/json";
            string response = string.Empty;
            using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
            {
                //using (System.IO.StreamReader reader = new System.IO.StreamReader(
                //                                        res.GetResponseStream()
                //                                        , Encoding.UTF8))
                //{
                //    response = reader.ReadToEnd();
                //}
                return (int)res.StatusCode;
            }
        }

        /// <summary>
        /// 转换时间为时间戳(毫秒)
        /// </summary>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static long TimeStampMilliseconds(DateTime dateTime)
        {
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));

            return (long)(dateTime - dtStart).TotalMilliseconds;
        }

        /// <summary>
        /// 加密标识
        /// </summary>
        /// <param name="prepareSign"></param>
        /// <param name="paras"></param>
        /// <param name="requestEntity"></param>
        /// <returns></returns>
        private static string GetSign(string prepareSign, string paras, string requestEntity = "")
        {
            prepareSign += paras;
            if (!string.IsNullOrWhiteSpace(requestEntity))
            {
                prepareSign += "\n" + requestEntity;
            }
            else
            {
                prepareSign += "\n47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=";
            }
            prepareSign = HmacSHA256(prepareSign, token);

            return System.Web.HttpUtility.UrlEncode(prepareSign);
        }

        /// <summary>
        /// 请求体加密
        /// </summary>
        /// <param name="requestJsonEntity"></param>
        /// <returns></returns>
        private static string GetEntitySign(string requestJsonEntity)
        {
            byte[] jsonEntity = Encoding.UTF8.GetBytes(requestJsonEntity.Trim());
            string result = "";
            if (jsonEntity == null || jsonEntity.Length == 0)
            {
                result = sha256("");
            }
            else
            {
                byte[] data = null;
                if (jsonEntity.Length <= 100)
                {
                    data = jsonEntity;
                }
                else
                {
                    data = jsonEntity.Take(100).ToArray();
                }
                string temp = Encoding.UTF8.GetString(data);
                result = sha256(temp);
            }
            return result;
        }

猜你喜欢

转载自blog.csdn.net/qq_36535245/article/details/82151872