| | |
| | | { |
| | | public class HttpUtil |
| | | { |
| | | static HttpUtil _HttpUtil; |
| | | public static HttpUtil Ins |
| | | { |
| | | get |
| | | { |
| | | if (_HttpUtil == null) |
| | | { |
| | | _HttpUtil = new HttpUtil(); |
| | | } |
| | | return _HttpUtil; |
| | | } |
| | | } |
| | | |
| | | #region **********全局常量********** |
| | | //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | //public const string APP_KEY = "QWERREWQ"; |
| | | //public const string SECRET_KEY = "CPBUCTRLCPBUABCD"; |
| | | |
| | | |
| | | string _GlobalRequestHttpsHost; |
| | | /// <summary> |
| | | /// 固定域名,正式环境 |
| | | /// 公共域名就近解析 |
| | | /// </summary> |
| | | public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777"; |
| | | //const string APP_KEY = "COSDFPIN"; |
| | | //const string SECRET_KEY = "COSDFPJDCOSDFPJT"; |
| | | const string APP_KEY = "QWERREWQ"; |
| | | const string SECRET_KEY = "CPBUCTRLCPBUABCD"; |
| | | public string GlobalRequestHttpsHost |
| | | { |
| | | get |
| | | { |
| | | _GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | if (OnAppConfig.Instance.HostType == RequestHostType.ONLINE) |
| | | _GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com"; |
| | | else if (OnAppConfig.Instance.HostType == RequestHostType.TEST) |
| | | _GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com"; |
| | | else if (OnAppConfig.Instance.HostType == RequestHostType.DEV) |
| | | _GlobalRequestHttpsHost = "http://59.41.255.150:7777"; |
| | | return _GlobalRequestHttpsHost; |
| | | } |
| | | } |
| | | string app_key; |
| | | public string APP_KEY |
| | | { |
| | | get |
| | | { |
| | | app_key = "QWERREWQ"; |
| | | if (OnAppConfig.Instance.HostType == RequestHostType.ONLINE) |
| | | app_key = "QWERREWQ"; |
| | | else if (OnAppConfig.Instance.HostType == RequestHostType.TEST) |
| | | app_key = "HDL-HOME-APP-TEST"; |
| | | else if (OnAppConfig.Instance.HostType == RequestHostType.DEV) |
| | | app_key = "CPEVRLRT"; |
| | | return app_key; |
| | | } |
| | | } |
| | | string _SECRET_KEY; |
| | | public string SECRET_KEY |
| | | { |
| | | get |
| | | { |
| | | _SECRET_KEY = "CPBUCTRLCPBUABCD"; |
| | | if (OnAppConfig.Instance.HostType == RequestHostType.ONLINE) |
| | | _SECRET_KEY = "CPBUCTRLCPBUABCD"; |
| | | else if (OnAppConfig.Instance.HostType == RequestHostType.TEST) |
| | | _SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"; |
| | | else if (OnAppConfig.Instance.HostType == RequestHostType.DEV) |
| | | _SECRET_KEY = "CPEVRLSJCPEVRLSZ"; |
| | | return _SECRET_KEY; |
| | | } |
| | | } |
| | | |
| | | //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm |
| | | |
| | | /// <summary> |
| | | /// RegionMark |
| | | /// </summary> |
| | |
| | | #endregion |
| | | |
| | | #region **********网络请求封装********** |
| | | |
| | | /// <summary> |
| | | /// Get 请求服务器方法 |
| | | /// </summary> |
| | |
| | | |
| | | if(MainPage.NoLoginMode) |
| | | { |
| | | return new ResponsePackNew() { Code = "0" }; |
| | | return new ResponsePackNew() { Code = "0" ,Data = "" }; |
| | | } |
| | | #region HttpWebRequest |
| | | try |
| | | { |
| | | |
| | | if (string.IsNullOrEmpty(urlHead)) |
| | | { |
| | | urlHead = OnAppConfig.Instance.RequestHttpsHost; |
| | | } |
| | | string requestFullUrl = urlHead + apiPath; |
| | | |
| | | |
| | | RestClient client = new RestClient(requestFullUrl); |
| | | |
| | | RestRequest request = new RestRequest(method); |
| | | request.Timeout = mTimeout * 1000; |
| | | request.AddHeader("content-type", "application/json"); |
| | | request.AddHeader("language", Language.CurrentLanguage == "Chinese" ? "zh" : "en");//增加语言标识 |
| | | request.AddHeader("language", Language.CurrentLanguage == "Chinese" ? "cn" : "en");//增加语言标识 wxr 2023-03-22 17:03:34 |
| | | |
| | | if (string.IsNullOrEmpty(replaceToken)) |
| | | { |
| | |
| | | request.AddUrlSegment(data.Key, data.Value.ToString()); |
| | | } |
| | | } |
| | | |
| | | IRestResponse response = client.Execute(request); |
| | | HDL_ON.Utlis.WriteLine("发送", requestFullUrl, response.Request.Body?.Value.ToString()); |
| | | if(apiPath == NewAPI.API_POST_Login) |
| | | { |
| | | var ddd = Newtonsoft.Json.JsonConvert.SerializeObject(response); |
| | | //Console.WriteLine(ddd); |
| | | } |
| | | if (response.StatusCode == HttpStatusCode.OK) |
| | | { |
| | | try |
| | |
| | | revertObj.Data = ""; |
| | | } |
| | | //*****一些判空处理***************** |
| | | |
| | | HDL_ON.Utlis.WriteLine("接收", requestFullUrl, response.Content); |
| | | return revertObj; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | else |
| | | { |
| | | HDL_ON.Utlis.WriteLine(response.Content); |
| | | HDL_ON.Utlis.WriteLine($"接口异常:{requestFullUrl} \r\n"+response.Content); |
| | | if(response.Content!= null) |
| | | { |
| | | try |
| | | { |
| | | var pack = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePackNew>(response.Content); |
| | | if (pack != null) |
| | | { |
| | | return pack; |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | return new ResponsePackNew() { Code = StateCode.NETWORK_ERROR }; |
| | | } |
| | | |
| | |
| | | /// 刷新 Token |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | static bool RefreshToken() |
| | | static bool RefreshToken(bool canRefresh = true) |
| | | { |
| | | try |
| | | { |
| | |
| | | UserInfo.Current.RefreshToken = revertData.refreshToken; |
| | | UserInfo.Current.LastTime = DateTime.Now; |
| | | UserInfo.Current.SaveUserInfo(); |
| | | return true; |
| | | #if __IOS__ |
| | | //var sdm = new SiriKit.SceneDateManager(); |
| | | //sdm.AccessToken = UserInfo.Current.LoginTokenString; |
| | | //sdm.RefreshToken = UserInfo.Current.RefreshToken; |
| | | var sdm = new SiriKit.SceneDateManager(); |
| | | sdm.AccessToken = UserInfo.Current.LoginTokenString; |
| | | sdm.RefreshToken = UserInfo.Current.RefreshToken; |
| | | #endif |
| | | return true; |
| | | } |
| | | else if (revertObj.Code == StateCode.PasswrodError) |
| | | { |
| | |
| | | RestRequest request = new RestRequest(Method.POST); |
| | | request.Timeout = mTimeout * 1000; |
| | | request.AddHeader("content-type", "application/json"); |
| | | request.AddHeader("language", Language.CurrentLanguage == "Chinese" ? "cn" : "en");//增加语言标识 |
| | | |
| | | if (string.IsNullOrEmpty(replaceToken)) |
| | | { |
| | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | #endregion |
| | | |
| | | #region **********签名校验********** |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取当前时间戳值 |
| | | /// </summary> |
| | |
| | | //2. 计算sign |
| | | if (paramDictionary != null) |
| | | { |
| | | paramDictionary.Add("appKey", APP_KEY); |
| | | paramDictionary.Add("appKey", Ins.APP_KEY); |
| | | paramDictionary.Add("timestamp", GetTimestamp()); |
| | | //2.1 字典升序 |
| | | paramDictionary = paramDictionary.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value); |
| | |
| | | } |
| | | |
| | | //2.3 拼接SECRET_KEY |
| | | str = str.Substring(0, str.Length - 1) + SECRET_KEY; |
| | | str = str.Substring(0, str.Length - 1) + Ins.SECRET_KEY; |
| | | //2.4 MD5转换+转小写 |
| | | var signstr = SignMD5Encrypt(str); |
| | | paramDictionary.Add("sign", signstr); |