| | |
| | | using System.Text; |
| | | using HDL_ON.Entity; |
| | | using RestSharp; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.DAL.Server |
| | | { |
| | |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// 固定域名 |
| | | /// 固定域名,正式环境 |
| | | /// </summary> |
| | | //public const string GlobalRequestHttpsHost = "https://center.hdlcontrol.com"; |
| | | //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com"; |
| | | |
| | | /// <summary> |
| | |
| | | public static ResponsePackNew RequestHttpsPostFroHome(string apiPath, string bodyParameterJson, int mTimeout = 10) |
| | | { |
| | | string urlHead = DB_ResidenceData.residenceData.residecenInfo.regionUrl; |
| | | var replaceToken = ""; |
| | | if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare) |
| | | { |
| | | replaceToken = DB_ResidenceData.residenceData.MasterToken; |
| | | } |
| | | return RequestHttps(Method.POST, apiPath, bodyParameterJson, null, null, urlHead, replaceToken, mTimeout); |
| | | //var replaceToken = ""; |
| | | //if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare) |
| | | //{ |
| | | // replaceToken = DB_ResidenceData.residenceData.MasterToken; |
| | | //} |
| | | return RequestHttps(Method.POST, apiPath, bodyParameterJson, null, null, urlHead, "", mTimeout); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | try |
| | | { |
| | | |
| | | //if (string.IsNullOrEmpty(urlHead)) |
| | | //{ |
| | | // urlHead = UserInfo.Current.RequestHttpsHost; |
| | | //} |
| | | //string requestFullUrl = urlHead + apiPath; |
| | | if (string.IsNullOrEmpty(urlHead)) |
| | | { |
| | | urlHead = UserInfo.Current.RequestHttpsHost; |
| | | } |
| | | string requestFullUrl = urlHead + apiPath; |
| | | |
| | | |
| | | //**************测试************** |
| | | string requestFullUrl = GlobalRequestHttpsHost + apiPath; |
| | | //**************测试************** |
| | | ////**************测试************** |
| | | //string requestFullUrl = GlobalRequestHttpsHost + apiPath; |
| | | ////**************测试************** |
| | | |
| | | RestClient client = new RestClient(requestFullUrl); |
| | | |
| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | ResponsePackNew revertObj = new ResponsePackNew() { }; |
| | | revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content); |
| | | //*****一些判空处理***************** |
| | |
| | | #region RestRequest |
| | | try |
| | | { |
| | | //if (string.IsNullOrEmpty (urlHead)) { |
| | | // urlHead = UserInfo.Current.RequestHttpsHost; |
| | | //} |
| | | //string requestFullUrl = urlHead + apiPath; |
| | | if (string.IsNullOrEmpty(urlHead)) |
| | | { |
| | | urlHead = UserInfo.Current.RequestHttpsHost; |
| | | } |
| | | string requestFullUrl = urlHead + apiPath; |
| | | |
| | | //**************测试************** |
| | | string requestFullUrl = GlobalRequestHttpsHost + apiPath; |
| | | //**************测试************** |
| | | ////**************测试************** |
| | | //string requestFullUrl = GlobalRequestHttpsHost + apiPath; |
| | | ////**************测试************** |
| | | |
| | | RestClient client = new RestClient(requestFullUrl); |
| | | //client.Timeout = mTimeout * 1000; |
| | |
| | | try |
| | | { |
| | | |
| | | //if (string.IsNullOrEmpty (urlHead)) { |
| | | // urlHead = UserInfo.Current.RequestHttpsHost; |
| | | //} |
| | | //string requestFullUrl = urlHead + apiPath; |
| | | if (string.IsNullOrEmpty(urlHead)) |
| | | { |
| | | urlHead = UserInfo.Current.RequestHttpsHost; |
| | | } |
| | | string requestFullUrl = urlHead + apiPath; |
| | | |
| | | //**************测试************** |
| | | string requestFullUrl = GlobalRequestHttpsHost + apiPath; |
| | | //**************测试************** |
| | | ////**************测试************** |
| | | //string requestFullUrl = GlobalRequestHttpsHost + apiPath; |
| | | ////**************测试************** |
| | | |
| | | RestClient client = new RestClient(requestFullUrl); |
| | | //client.Timeout = mTimeout * 1000; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 下载文件 请求服务器方法 |
| | | /// </summary> |
| | | /// <param name="apiPath"></param> |
| | | /// <param name="bodyParameterJson"></param> |
| | | /// <param name="queryDictionary"></param> |
| | | /// <param name="urlHead"></param> |
| | | /// <param name="replaceToken"></param> |
| | | /// <param name="mTimeout"></param> |
| | | /// <returns></returns> |
| | | public static byte[] HttpsDownload(string requestFullUrl, int mTimeout = 30) |
| | | { |
| | | #region RestRequest |
| | | try |
| | | { |
| | | RestClient client = new RestClient(requestFullUrl); |
| | | RestRequest request = new RestRequest(Method.GET); |
| | | request.Timeout = mTimeout * 1000; |
| | | |
| | | IRestResponse response = client.Execute(request); |
| | | return response.RawBytes; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | HDL_ON.Utlis.WriteLine(ex.Message); |
| | | return null; |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | const string APP_KEY = "HDL-HOME-APP-TEST"; |
| | |
| | | static string GetTimestamp() |
| | | { |
| | | System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 |
| | | return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 相差秒数 |
| | | return ((long)(DateTime.Now - startTime).TotalMilliseconds).ToString(); // 相差秒数 |
| | | //return ((long)(DateTime.Now - startTime).TotalSeconds).ToString(); // 相差秒数 |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | namespace Shared.Securitys |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public partial class EncryptionService |
| | | { |
| | | #region 加密 |
| | | /// <summary> |
| | | /// 加密主题为Base64 |
| | | /// </summary> |
| | | /// <param name="pToEncrypt"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static string AesEncryptTopic(string pToEncrypt, string key) |
| | | { |
| | | if (string.IsNullOrEmpty(pToEncrypt)) return null; |
| | | if (string.IsNullOrEmpty(key)) return pToEncrypt; |
| | | //需要加密内容的明文流 |
| | | Byte[] toEncryptArray = Encoding.UTF8.GetBytes(pToEncrypt); |
| | | |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | RijndaelManaged rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES加密器对象 |
| | | ICryptoTransform cTransform = rm.CreateEncryptor(); |
| | | |
| | | //使用AES将明文流转成密文字节数组 |
| | | Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | |
| | | //将AES生成的密文字节数组转成Base64字符串 |
| | | return Convert.ToBase64String(resultArray, 0, resultArray.Length); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加密负载为二进制流 |
| | | /// </summary> |
| | | /// <param name="toEncryptArray"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static byte[] AesEncryptPayload(byte[] toEncryptArray, string key) |
| | | { |
| | | if (string.IsNullOrEmpty(key)) return toEncryptArray; |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | var rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES加密器对象 |
| | | var cTransform = rm.CreateEncryptor(); |
| | | //使用AES将明文流转成密文字节数组 |
| | | return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region 解密 |
| | | /// <summary> |
| | | /// 解密主题数据 |
| | | /// </summary> |
| | | /// <param name="pToDecrypt"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static string AesDecryptTopic(string pToDecrypt, string key) |
| | | { |
| | | //AES密文Base64转成字符串 |
| | | Byte[] toEncryptArray = Convert.FromBase64String(pToDecrypt); |
| | | |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | RijndaelManaged rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES解密器对象 |
| | | ICryptoTransform cTransform = rm.CreateDecryptor(); |
| | | |
| | | //使用AES将密文流转成明文的字节数组 |
| | | Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | |
| | | //转成字符串 |
| | | return Encoding.UTF8.GetString(resultArray); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 采用Aes解密负载数据 |
| | | /// </summary> |
| | | /// <param name="toEncryptArray"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static byte[] AesDecryptPayload(byte[] toEncryptArray, string key) |
| | | { |
| | | //配置AES加密Key(密钥、向量、模式、填充) |
| | | var rm = new RijndaelManaged |
| | | { |
| | | Key = Encoding.UTF8.GetBytes(key), |
| | | IV = Encoding.UTF8.GetBytes(key), |
| | | Mode = CipherMode.CBC, |
| | | Padding = PaddingMode.PKCS7 |
| | | }; |
| | | |
| | | //创建AES解密器对象 |
| | | var cTransform = rm.CreateDecryptor(); |
| | | |
| | | //使用AES将密文流转成明文的字节数组 |
| | | return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | } |
| | | } |