From b6655c930866fadf3275587f4c692aa658bd9b21 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期三, 24 六月 2020 10:57:07 +0800 Subject: [PATCH] 2020-06-24 1. 修改网络请求方法,改为HttpWebRequest支持自定义超时时间,默认10S。 2.后台回前台,超过20S断开远程重新连接。 --- Crabtree/SmartHome/UI/SimpleControl/MainPage.cs | 182 ++++++++++++++++++++++++++++++++++----------- 1 files changed, 138 insertions(+), 44 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs b/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs index f549af7..68e6175 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs @@ -38,7 +38,7 @@ //public static Button LogoButton = new Button (); - public static string RequestVersion = "2.506101"; + public static string RequestVersion = "2.506221"; public static UserInfo LoginUser; /// <summary> /// 鏄惁鏄鐞嗗憳鏉冮檺(鍙樻洿浜�,鎴愬憳鐨勬椂鍊�,杩欎釜涔熶负ture銆備负浠�涔堜細澹版槑杩欐牱鍙橀噺,鍥犱负鏈変簺鎺ュ彛蹇呴』浣跨敤鍘熸潵鐨凾oken) @@ -190,52 +190,52 @@ static DateTime requesTime = DateTime.MinValue; static bool isShowLoading = true; - /// <summary> - /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� - /// </summary> - /// <returns>The https.</returns> - /// <param name="methodType">璇锋眰鏂规硶.</param> - /// <param name="dataStringJson">璇锋眰鐨勫弬鏁�.</param> - /// <param name="needHeaders">鏄惁闇�瑕佸寘澶�.</param> - public static ResponsePack RequestHttps (string methodType, string dataStringJson, string urlHead = "") - { - ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) => { - return true; - }; + ///// <summary> + ///// 璇锋眰鏈嶅姟鍣ㄦ柟娉� + ///// </summary> + ///// <returns>The https.</returns> + ///// <param name="methodType">璇锋眰鏂规硶.</param> + ///// <param name="dataStringJson">璇锋眰鐨勫弬鏁�.</param> + ///// <param name="needHeaders">鏄惁闇�瑕佸寘澶�.</param> + //public static ResponsePack RequestHttpsOld (string methodType, string dataStringJson, string urlHead = "") + //{ + // ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) => { + // return true; + // }; - #region - var webClient = new WebClient (); - if (urlHead == "") { - urlHead = RequestHttpsHost; - } - //else { - // webClient.Headers.Add ("CONTENT-TYPE", "application/json"); - //} - webClient.Headers.Add ("CONTENT-TYPE", "application/json"); - string url = urlHead + methodType; - if (LoginUser != null) {/* 濡傛灉涓嶉渶瑕侀獙璇乀oken鍙互涓嶇敤浼犲叆 */ - webClient.Headers.Add ("Authorization", LoginUser.LoginTokenString); - } - byte [] bytes = null; - try { - bytes = webClient.UploadData (url, Encoding.UTF8.GetBytes (dataStringJson)); - } catch (System.Net.WebException webEx) { - //Application.RunOnMainThread (() => { - // MainPage.Loading.Hide (); - //}); - return new ResponsePack () { StateCode = ErrorCode.NetworkError }; - } - string responseString = Encoding.UTF8.GetString (bytes); + // #region + // var webClient = new WebClient (); + // if (urlHead == "") { + // urlHead = RequestHttpsHost; + // } + // //else { + // // webClient.Headers.Add ("CONTENT-TYPE", "application/json"); + // //} + // webClient.Headers.Add ("CONTENT-TYPE", "application/json"); + // string url = urlHead + methodType; + // if (LoginUser != null) {/* 濡傛灉涓嶉渶瑕侀獙璇乀oken鍙互涓嶇敤浼犲叆 */ + // webClient.Headers.Add ("Authorization", LoginUser.LoginTokenString); + // } + // byte [] bytes = null; + // try { + // bytes = webClient.UploadData (url, Encoding.UTF8.GetBytes (dataStringJson)); + // } catch (System.Net.WebException webEx) { + // //Application.RunOnMainThread (() => { + // // MainPage.Loading.Hide (); + // //}); + // return new ResponsePack () { StateCode = ErrorCode.NetworkError }; + // } + // string responseString = Encoding.UTF8.GetString (bytes); - try { - return Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (responseString); - } catch (Exception ex) { - Utlis.WriteLine (ex.ToString ()); - return new ResponsePack () { StateCode = "Data exception" }; - } - #endregion + // try { + // return Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (responseString); + // } catch (Exception ex) { + // Utlis.WriteLine (ex.ToString ()); + // return new ResponsePack () { StateCode = "Data exception" }; + // } + // #endregion - } + //} /// <summary> /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� @@ -388,6 +388,100 @@ } + /// <summary> + /// 璇锋眰鏈嶅姟鍣ㄦ柟娉� + /// 2020-06-22 甯﹁嚜瀹氫箟璇锋眰瓒呮椂 鏃堕棿鏂规硶 + /// </summary> + /// <returns>The https.</returns> + /// <param name="methodType">璇锋眰鏂规硶.</param> + /// <param name="dataStringJson">璇锋眰鐨勫弬鏁�.</param> + /// <param name="needHeaders">鏄惁闇�瑕佸寘澶�.</param> + public static ResponsePack RequestHttps (string methodType, string dataStringJson, string urlHead = "", int mTimeout = 10, string requestMethod = "POST") + { + ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) => { + return true; + }; + + + #region HttpWebRequest + + try { + + if (urlHead == "") { + urlHead = RequestHttpsHost; + } + string requestFullUrl = urlHead + methodType; + + //鍒濆鍖栨柊鐨剋ebRequst + //1锛� 鍒涘缓httpWebRequest瀵硅薄 + HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create (new Uri (requestFullUrl)); + + //2锛� 鍒濆鍖朒ttpWebRequest瀵硅薄 + webRequest.Method = requestMethod; + + webRequest.Timeout = mTimeout * 1000; + + var byteData = Encoding.UTF8.GetBytes (dataStringJson); + + if (LoginUser != null) {/* 濡傛灉涓嶉渶瑕侀獙璇乀oken鍙互涓嶇敤浼犲叆 */ + //瀵瑰簲寰俊缃戝潃 + webRequest.Headers.Add (HttpRequestHeader.Authorization, LoginUser.LoginTokenString); + } + if (requestMethod == "GET") { + //webRequest.ContentType = "text/html"; + webRequest.ContentType = "application/json"; + } else { + webRequest.ContentType = "application/json"; + webRequest.ContentLength = byteData.Length; + + //3锛� 闄勫姞瑕丳OST缁欐湇鍔″櫒鐨勬暟鎹埌HttpWebRequest瀵硅薄(闄勫姞POST鏁版嵁鐨勮繃绋嬫瘮杈冪壒娈婏紝瀹冨苟娌℃湁鎻愪緵涓�涓睘鎬х粰鐢ㄦ埛瀛樺彇锛岄渶瑕佸啓鍏ttpWebRequest瀵硅薄鎻愪緵鐨勪竴涓猻tream閲岄潰銆�) + var newStream = webRequest.GetRequestStream ();//鍒涘缓涓�涓猄tream,璧嬪�兼槸鍐欏叆HttpWebRequest瀵硅薄鎻愪緵鐨勪竴涓猻tream閲岄潰 + newStream.Write (byteData, 0, byteData.Length); + newStream.Flush (); + newStream.Close (); + } + + //4锛� 璇诲彇鏈嶅姟鍣ㄧ殑杩斿洖淇℃伅 + var response = (HttpWebResponse)webRequest.GetResponse (); + using (var stream = response.GetResponseStream ()) { + if (stream == null) { + return new ResponsePack () { StateCode = ErrorCode.NetworkError }; + } + var ms = new MemoryStream (); + var bytes = new byte [1024]; + var len = int.MaxValue; + while (stream.CanRead && 0 < len) { + len = stream.Read (bytes, 0, bytes.Length); + ms.Write (bytes, 0, len); + } + //var backBytes = ms.ToArray (); + string responseString = Encoding.UTF8.GetString (ms.ToArray ()); + + try { + ResponsePack revertObj = new ResponsePack () { }; + revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (responseString); + if (revertObj.StateCode == null) { + revertObj.StateCode = "Data Exception"; + } + return revertObj; + } catch (Exception ex) { + Shared.Utlis.WriteLine (ex.ToString ()); + return new ResponsePack () { StateCode = "Data Exception" }; + } + + //return ms.ToArray (); + } + } catch (Exception ex) { +#if DEBUG + System.Console.WriteLine (ex.Message); +#endif + //The operation has timed out + return new ResponsePack () { StateCode = ErrorCode.NetworkError }; + } + + #endregion + + } #region LoadingTipMsg 杩滅▼杩炴帴Tip -- Gitblit v1.8.0