From b409ece9569247d7e7b44fc15e8a02556ca05a57 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期四, 01 七月 2021 15:27:23 +0800 Subject: [PATCH] 合并温居城代码 --- HDL_ON/DAL/Server/HttpUtil.cs | 235 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 180 insertions(+), 55 deletions(-) diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs index 0fa2299..75c9b97 100644 --- a/HDL_ON/DAL/Server/HttpUtil.cs +++ b/HDL_ON/DAL/Server/HttpUtil.cs @@ -6,18 +6,20 @@ using System.Text; using HDL_ON.Entity; using RestSharp; -using Shared; namespace HDL_ON.DAL.Server { public class HttpUtil { - #region HttpUtil 鍏ㄥ眬甯搁噺 - ///// <summary> - ///// API_HTTPS - ///// </summary> - //public const string API_HTTPS = "https://"; + #region **********鍏ㄥ眬甯搁噺********** + /// <summary> + /// 鍥哄畾鍩熷悕,姝e紡鐜 + /// 鍏叡鍩熷悕灏辫繎瑙f瀽 + /// + /// </summary> + //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; + public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm /// <summary> /// RegionMark /// </summary> @@ -37,11 +39,7 @@ #endregion - /// <summary> - /// 鍥哄畾鍩熷悕 - /// </summary> - //public const string GlobalRequestHttpsHost = "https://center.hdlcontrol.com"; - public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com"; + #region **********缃戠粶璇锋眰灏佽********** /// <summary> /// Get 璇锋眰鏈嶅姟鍣ㄦ柟娉� @@ -95,7 +93,7 @@ /// <returns></returns> public static ResponsePackNew RequestHttpsPostFroHome(string apiPath, string bodyParameterJson, int mTimeout = 10) { - string urlHead = DB_ResidenceData.residenceData.residecenInfo.regionUrl; + string urlHead = DB_ResidenceData.Instance.CurrentRegion.regionUrl; //var replaceToken = ""; //if (DB_ResidenceData.residenceData.residecenInfo.IsOthreShare) //{ @@ -146,29 +144,34 @@ /// <param name="replaceToken"></param> /// <param name="mTimeout"></param> /// <returns></returns> - public static ResponsePackNew RequestHttps(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10) + static ResponsePackNew RequestHttpsBase(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10) { + //Dome妯″紡鐧诲綍 + + if(MainPage.NoLoginMode) + { + return new ResponsePackNew() { Code = "0" }; + } #region HttpWebRequest try { - //if (string.IsNullOrEmpty(urlHead)) - //{ - // urlHead = UserInfo.Current.RequestHttpsHost; - //} - //string requestFullUrl = urlHead + apiPath; + if (string.IsNullOrEmpty(urlHead)) + { + urlHead = OnAppConfig.Instance.RequestHttpsHost; + } + string requestFullUrl = urlHead + apiPath; - //**************娴嬭瘯************** - string requestFullUrl = GlobalRequestHttpsHost + apiPath; - //**************娴嬭瘯************** + ////**************娴嬭瘯************** + //string requestFullUrl = GlobalRequestHttpsHost + apiPath; + ////**************娴嬭瘯************** RestClient client = new RestClient(requestFullUrl); RestRequest request = new RestRequest(method); request.Timeout = mTimeout * 1000; request.AddHeader("content-type", "application/json"); - //request.AddHeader ("cache-control", "no-cache"); if (string.IsNullOrEmpty(replaceToken)) { @@ -213,7 +216,7 @@ //*****涓�浜涘垽绌哄鐞�***************** if (revertObj.Code == null) { - revertObj.Code = "DATA_EXCEPTION"; + revertObj.Code = StateCode.DATA_EXCEPTION; } if (revertObj.Data == null) @@ -222,31 +225,92 @@ } //*****涓�浜涘垽绌哄鐞�***************** - ////缁熶竴杞垚澶у啓 - //revertObj.StateCode = revertObj.StateCode.ToUpper (); return revertObj; } catch (Exception ex) { HDL_ON.Utlis.WriteLine(ex.Message); - return new ResponsePackNew() { Code = "DATA_EXCEPTION" }; + return new ResponsePackNew() { Code = StateCode.DATA_EXCEPTION }; } } else { HDL_ON.Utlis.WriteLine(response.Content); - return new ResponsePackNew() { Code = "NETWORK_ERROR" }; + return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR }; } } catch (Exception ex) { HDL_ON.Utlis.WriteLine(ex.Message); - return new ResponsePackNew() { Code = "NETWORK_ERROR" }; + return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR }; } #endregion + } + + /// <summary> + /// 閫氱敤 璇锋眰鏈嶅姟鍣ㄦ柟娉� + /// 澧炲姞token杩囨湡澶勭悊 + /// </summary> + /// <param name="method"></param> + /// <param name="apiPath"></param> + /// <param name="bodyParameterJson"></param> + /// <param name="queryDictionary"></param> + /// <param name="urlSegmentDictionary"></param> + /// <param name="urlHead"></param> + /// <param name="replaceToken"></param> + /// <param name="mTimeout"></param> + /// <returns></returns> + public static ResponsePackNew RequestHttps(Method method, string apiPath, string bodyParameterJson = null, Dictionary<string, object> queryDictionary = null, Dictionary<string, object> urlSegmentDictionary = null, string urlHead = "", string replaceToken = "", int mTimeout = 10) + { + var responsePackNew = RequestHttpsBase(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout); + //*****************Token杩囨湡澶勭悊***************** + if (responsePackNew.Code == StateCode.TOKEN_EXPIRED) + { + //鍒锋柊Token + if (RefreshToken()) { + return RequestHttpsBase(method, apiPath, bodyParameterJson, queryDictionary, urlSegmentDictionary, urlHead, replaceToken, mTimeout); + } + else + { + return responsePackNew; + } + } + //*****************Token杩囨湡澶勭悊***************** + return responsePackNew; + } + + + /// <summary> + /// 鍒锋柊Token + /// </summary> + /// <returns></returns> + static bool RefreshToken() + { + try + { + var requestJson = GetSignRequestJson(new RefreshTokenObj() + { + refreshToken = UserInfo.Current.RefreshToken, + }); + var revertObj = RequestHttpsBase(Method.POST, NewAPI.API_POST_Login, requestJson); + if (revertObj.Code == StateCode.SUCCESS) + { + var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(revertObj.Data.ToString()); + UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken; + UserInfo.Current.RefreshToken = revertData.refreshToken; + UserInfo.Current.LastTime = DateTime.Now; + UserInfo.Current.SaveUserInfo(); + return true; + } + return false; + } + catch + { + return false; + } } /// <summary> @@ -264,17 +328,17 @@ #region RestRequest try { - //if (string.IsNullOrEmpty (urlHead)) { - // urlHead = UserInfo.Current.RequestHttpsHost; - //} - //string requestFullUrl = urlHead + apiPath; + if (string.IsNullOrEmpty(urlHead)) + { + urlHead = OnAppConfig.Instance.RequestHttpsHost; + } + string requestFullUrl = urlHead + apiPath; - //**************娴嬭瘯************** - string requestFullUrl = GlobalRequestHttpsHost + apiPath; - //**************娴嬭瘯************** + ////**************娴嬭瘯************** + //string requestFullUrl = GlobalRequestHttpsHost + apiPath; + ////**************娴嬭瘯************** RestClient client = new RestClient(requestFullUrl); - //client.Timeout = mTimeout * 1000; RestRequest request = new RestRequest(Method.POST); request.Timeout = mTimeout * 1000; request.AddHeader("content-type", "application/json"); @@ -334,14 +398,15 @@ try { - //if (string.IsNullOrEmpty (urlHead)) { - // urlHead = UserInfo.Current.RequestHttpsHost; - //} - //string requestFullUrl = urlHead + apiPath; + if (string.IsNullOrEmpty(urlHead)) + { + urlHead = OnAppConfig.Instance.RequestHttpsHost; + } + string requestFullUrl = urlHead + apiPath; - //**************娴嬭瘯************** - string requestFullUrl = GlobalRequestHttpsHost + apiPath; - //**************娴嬭瘯************** + ////**************娴嬭瘯************** + //string requestFullUrl = GlobalRequestHttpsHost + apiPath; + ////**************娴嬭瘯************** RestClient client = new RestClient(requestFullUrl); //client.Timeout = mTimeout * 1000; @@ -392,7 +457,7 @@ revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content); if (revertObj.Code == null) { - revertObj.Code = "DATA_EXCEPTION"; + revertObj.Code = StateCode.DATA_EXCEPTION; } ////缁熶竴杞垚澶у啓 //revertObj.StateCode = revertObj.StateCode.ToUpper (); @@ -401,26 +466,60 @@ catch (Exception ex) { HDL_ON.Utlis.WriteLine(ex.Message); - return new ResponsePackNew() { Code = "DATA_EXCEPTION" }; + return new ResponsePackNew() { Code = StateCode.DATA_EXCEPTION }; } } else { HDL_ON.Utlis.WriteLine(response.Content); - return new ResponsePackNew() { Code = "NETWORK_ERROR" }; + return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR }; } } catch (Exception ex) { HDL_ON.Utlis.WriteLine(ex.Message); - return new ResponsePackNew() { Code = "NETWORK_ERROR" }; + return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR }; } #endregion } + /// <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 + + } + + #endregion + + #region **********绛惧悕鏍¢獙********** /// <summary> /// /// </summary> @@ -437,7 +536,8 @@ 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> @@ -455,19 +555,36 @@ } return signstr.ToLower(); } - + /// <summary> + /// 鍒ゆ柇褰撳墠鍊兼槸鍚﹂渶瑕佸弬涓庣鍚嶏紝淇濇寔璺熶簯绔竴鑷� + /// 绌哄瓧绗︿覆涓嶅弬涓� + /// 鏁扮粍,闆嗗悎,瀵硅薄涓嶅弬涓� + /// </summary> + /// <param name="valueStr"></param> + /// <returns></returns> + static bool IfValueNeedSign(string valueStr) + { + if (string.IsNullOrEmpty(valueStr) || valueStr.StartsWith("{") || valueStr.StartsWith("[")) + { + return false; + } + return true; + } /// <summary> /// 2020-11-02 /// 鍩虹鏈嶅姟鐨勬帴鍙i兘瑕佹牎楠宻ign /// 璁$畻sign绛惧悕 /// </summary> /// <returns></returns> - public static string GetSignRequestJson(object requestObj) + public static string GetSignRequestJson(object requestObj,Dictionary<string,object> paramDictionary = null) { try { //1. 灏唌odel瀹炰綋杞负Dictionary<string, object> - var paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj)); + if (paramDictionary == null) + { + paramDictionary = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(Newtonsoft.Json.JsonConvert.SerializeObject(requestObj)); + } //2. 璁$畻sign if (paramDictionary != null) { @@ -483,7 +600,10 @@ if (item.Value != null) { //Value.ToString()涓簄ull鎴栬��""涔熶笉鍙傚姞鏍¢獙 - if (!string.IsNullOrEmpty(item.Value.ToString())) + //if (!string.IsNullOrEmpty(item.Value.ToString()) && (item.Value is string || item.Value.GetType().IsValueType)) + //{ + //妫�娴嬪綋鍓嶅弬鏁版槸鍚﹂渶瑕佸弬涓庢牎楠� + if (IfValueNeedSign(item.Value.ToString())) { //濡傛灉鏄痓ool绫诲瀷锛岃杞皬鍐� if (item.Value is bool) @@ -503,7 +623,8 @@ //2.4 MD5杞崲+杞皬鍐� var signstr = SignMD5Encrypt(str); paramDictionary.Add("sign", signstr); - return Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary); + var signResult = Newtonsoft.Json.JsonConvert.SerializeObject(paramDictionary); + return signResult; } else { @@ -516,6 +637,7 @@ } } + #endregion } /// <summary> @@ -539,6 +661,11 @@ /// </summary> public string message; + /// <summary> + /// 杩欎釜鏄姹傞敊璇椂鐨勬墿灞曟暟鎹�,浠ュ悗鎵�鏈夌殑闄勫甫鎵╁睍鏁版嵁閮戒細鏀惧湪杩欓噷闈㈠姩鎬佺淮鎶� + /// </summary> + public object extra; + ///// <summary> ///// isSuccess ///// </summary> @@ -551,7 +678,5 @@ } - - } -- Gitblit v1.8.0