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。为什么会声明这样变量,因为有些接口必须使用原来的Token)
@@ -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) {/* 如果不需要验证Token可以不用传入 */
                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) {/* 如果不需要验证Token可以不用传入 */
        //        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;
                //初始化新的webRequst
                //1. 创建httpWebRequest对象
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create (new Uri (requestFullUrl));
                //2. 初始化HttpWebRequest对象
                webRequest.Method = requestMethod;
                webRequest.Timeout = mTimeout * 1000;
                var byteData = Encoding.UTF8.GetBytes (dataStringJson);
                if (LoginUser != null) {/* 如果不需要验证Token可以不用传入 */
                    //对应微信网址
                    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. 附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。)
                    var newStream = webRequest.GetRequestStream ();//创建一个Stream,赋值是写入HttpWebRequest对象提供的一个stream里面
                    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