using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Collections; using System.Data; using System.Net; using System.Net.Mail; using System.Configuration; using System.Globalization; using Wuqi.Webdiyer; using System.Web; using System.Web.Security; using System.Security.Cryptography; using Excel = Microsoft.Office.Interop.Excel; using System.Security.Cryptography; using System.Text.RegularExpressions; using System.Management; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Web.Script.Serialization; using System.Threading.Tasks; using Shell32; namespace Mtxfw.Utility { public class alilive { #region 返回公共请求参数 public string Version = "2016-11-01"; public string SignatureMethod = "HMAC-SHA1"; public string SignatureVersion = "1.0"; public string ResourceOwnerAccount = "fyd168882017"; public string Format = "JSON"; public string AppName = "agapp"; /// /// 添加直播拉流配置信息 /// /// RequestId public returnRequestId AddLivePullStreamInfoConfig(Config config, DateTime dt, string StreamName) { SortedDictionary dic = new SortedDictionary(); dic.Add("Action", "AddLivePullStreamInfoConfig"); dic.Add("AppName", AppName); dic.Add("DomainName", config.weblivedomain); dic.Add("StartTime", dt.ToString("yyyy-MM-ddTHH:mm:ssZ")); dic.Add("EndTime", dt.AddDays(1).ToString("yyyy-MM-ddTHH:mm:ssZ")); dic.Add("SourceUrl", config.weblivedomain); dic.Add("StreamName", StreamName); dic.Add("RegionId", ""); dic.Add("Version", Version); dic.Add("AccessKeyId", config.AccessKeyId); dic.Add("SignatureMethod", SignatureMethod); dic.Add("Timestamp", dt.ToString("yyyy-MM-ddTHH:mm:ssZ")); dic.Add("SignatureVersion", SignatureVersion); dic.Add("SignatureNonce", new Guid().ToString()); dic.Add("ResourceOwnerAccount", ResourceOwnerAccount); dic.Add("Format", Format); string Signature = BuildRequest(dic, config.AccessKeySecret); dic.Add("Signature", Signature); //获取过滤后的数组 Dictionary dicPara = new Dictionary(); dicPara = FilterPara(dic); string LinkString = CreateLinkString(dicPara); Mtxfw.Utility.Common.WriteHtml("/weixin/LinkString.txt", LinkString); returnRequestId r = new returnRequestId(); return r; } public static string BuildRequest(SortedDictionary sParaTemp, string AccessKeySecret) { //获取过滤后的数组 Dictionary dicPara = new Dictionary(); dicPara = FilterPara(sParaTemp); //组合参数数组 string prestr = CreateLinkString(dicPara)+ "&key=" + AccessKeySecret; //获得加密结果 string myMd5Str = Sha1Sign(prestr, Encoding.UTF8); //返回转换为大写的加密串 return myMd5Str.ToUpper(); } /// /// 除去数组中的空值和签名参数并以字母a到z的顺序排序 /// /// 过滤前的参数组 /// 过滤后的参数组 public static Dictionary FilterPara(SortedDictionary dicArrayPre) { Dictionary dicArray = new Dictionary(); foreach (KeyValuePair temp in dicArrayPre) { if (!string.IsNullOrEmpty(temp.Value)) { dicArray.Add(temp.Key, temp.Value); } } return dicArray; } //组合参数数组 public static string CreateLinkString(Dictionary dicArray) { StringBuilder prestr = new StringBuilder(); foreach (KeyValuePair temp in dicArray) { prestr.Append(temp.Key + "=" + temp.Value + "&"); } int nLen = prestr.Length; prestr.Remove(nLen - 1, 1); return prestr.ToString(); } /// /// SHA1加密 /// /// 待加密的字符串 /// 编码方式 /// public static String Sha1Sign(String content, Encoding encode) { try { SHA1 sha1 = new SHA1CryptoServiceProvider();//创建SHA1对象 byte[] bytes_in = encode.GetBytes(content);//将待加密字符串转为byte类型 byte[] bytes_out = sha1.ComputeHash(bytes_in);//Hash运算 sha1.Dispose();//释放当前实例使用的所有资源 String result = BitConverter.ToString(bytes_out);//将运算结果转为string类型 result = result.Replace("-", "").ToUpper(); return result; } catch (Exception ex) { return ex.Message; } } #endregion } public class returnRequestId { public String RequestId { get; set; } } }