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