WJC
2019-12-30 f1c3921b08bb22ac6f5db22d620e01d7e8e5c49f
ZigbeeApp/Shared/Common/CommonPage.cs
@@ -7,7 +7,7 @@
using Shared.Phone.UserCenter.Abount;
namespace Shared.Common
{
    public class CommonPage : FrameLayout
    public class CommonPage : UIDrawerLayout
    {
        static CommonPage commonPage;
        public static CommonPage Instance
@@ -43,6 +43,11 @@
            Application.MainPage.AddChidren(Loading);
            //}
            Phone.UserView.HomePage.Instance.InitPage();
            var roomList = new Shared.Phone.Device.Room.RoomManagement();
            Instance.AddLeftView(roomList);
            roomList.Show();
        }
        public static string SoftTitle = "ZigBee";
@@ -53,11 +58,11 @@
        public static string LogoString = @"Logo/Logo.png";
        public static string RegisterLogoString = @"Logo/Register_logo.png";
        public static string RequestHttpsHost = "https://global.hdlcontrol.com/HangZhouHdlCloudApi";
        //public static string RequestHttpsHost = "http://172.16.2.225:13061";
        //public static string RequestHttpsHost = "http://172.16.2.192:13061";
        /// <summary>
        /// 版本号
        /// </summary>
        public static string CodeIDString = "1.0.19071001";
        public static string CodeIDString = "1.0.19112901";
        /// <summary>
        /// 注册来源(0:HDL On 1:Zigbee)
        /// </summary>
@@ -74,11 +79,11 @@
        /// <summary>
        /// 请求版本号
        /// </summary>
        public static string RequestVersion = "1.0";
        public static string RequestVersion = "2.0";
        /// <summary>
        /// 左边距离屏幕的宽度--50
        /// 左边距离屏幕的宽度--58
        /// </summary>
        public static int XLeft = 50;
        public static int XLeft = 58;
        /// <summary>
        /// button高度--110
        /// </summary>
@@ -130,9 +135,9 @@
        /// </summary>
        public static int Navigation_Height = 220;
        /// <summary>
        /// 底边栏高度 160
        /// 底边栏高度
        /// </summary>
        public static int TabbarHeight = 160;
        public const int TabbarHeight = 141;
        /// <summary>
        /// 线条的高度--实际像素3
        /// </summary>
@@ -177,8 +182,15 @@
        /// 当前网络连接的模式  0:没有网络  1:远程连接,也叫3G,4G  2:WIFI
        /// </summary>
        public static int nowNetworkMode = 0;
        /// <summary>
        /// 占位字体大小
        /// 11
        /// </summary>
        public static int PlaceHolderTextSize = 11;
        /// <summary>
        /// 安卓的系统返回按键能否按下(比如在备份还原时,不能按下返回键)
        /// </summary>
        public static bool BackKeyCanClick = true;
        /// <summary>
        /// 请求服务器方法
@@ -215,9 +227,9 @@
        public async System.Threading.Tasks.Task<string> RequestHttpsZigbeeResultAsync(string requestUrl, byte[] byteData)
        {
            var result = await RequestHttpsZigbeeBytesResultAsync(requestUrl, byteData);
            if (result != null)
            {
                return Encoding.UTF8.GetString(result);
            if (result != null)
            {
                return Encoding.UTF8.GetString(result);
            }
            return null;
        }
@@ -228,39 +240,77 @@
        /// </summary>
        /// <param name="requestUrl">请求Url</param>
        /// <param name="byteData">请求的的数据</param>
        /// <param name="requestMethod">POST 或者 GET 等等</param>
        /// <returns>得到响应的数据</returns>
        public async System.Threading.Tasks.Task<byte[]> RequestHttpsZigbeeBytesResultAsync(string requestUrl, byte[] byteData)
        public async System.Threading.Tasks.Task<byte[]> RequestHttpsZigbeeBytesResultAsync(string requestUrl, byte[] byteData, string requestMethod = "POST")
        {
            //请求Url的完成路径
            var fullUrl = $"{RequestHttpsHost}/{requestUrl}";
            return await this.DoRequestZigbeeHttpsInterface(fullUrl, byteData, Config.Instance.Token, requestMethod);
        }
        /// <summary>
        /// <pra>请求服务器方法,指定一个Url,和请求方法,数据,Cookie,得到响应的数据</pra>
        /// <pra>注意!!此方法仅限【拥有管理员权限的成员】调用</pra>
        /// </summary>
        /// <param name="requestUrl">请求Url</param>
        /// <param name="byteData">请求的的数据</param>
        /// <param name="requestMethod">POST 或者 GET 等等</param>
        /// <returns>得到响应的数据</returns>
        public async System.Threading.Tasks.Task<byte[]> RequestZigbeeHttpsByAdmin(string requestUrl, byte[] byteData, string requestMethod = "POST")
        {
            //请求Url的完成路径
            var fullUrl = $"{Config.Instance.AdminRequestBaseUrl}/{requestUrl}";
            return await this.DoRequestZigbeeHttpsInterface(fullUrl, byteData, Config.Instance.AdminRequestToken, requestMethod);
        }
        /// <summary>
        /// 请求服务器方法
        /// 指定一个Url,和请求方法,数据,Cookie,得到响应的数据
        /// </summary>
        /// <param name="requestFullUrl">请求Url的完成路径</param>
        /// <param name="byteData">请求的的数据</param>
        /// <param name="token">token</param>
        /// <param name="requestMethod">POST 或者 GET 等等</param>
        /// <returns>得到响应的数据</returns>
        public async System.Threading.Tasks.Task<byte[]> DoRequestZigbeeHttpsInterface(string requestFullUrl, byte[] byteData, string token, string requestMethod = "POST")
        {
            try
            {
                //初始化新的webRequst
                //1. 创建httpWebRequest对象
                HttpWebRequest webRequest = null;
                if (Config.Instance.isAdministrator == true)
                {
                    webRequest = (HttpWebRequest)WebRequest.Create(new Uri($"{Config.Instance.AdminRequestBaseUrl}/{requestUrl}"));
                }
                else
                {
                    webRequest = (HttpWebRequest)WebRequest.Create(new Uri($"{RequestHttpsHost}/{requestUrl}"));
                }
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(requestFullUrl));
                //2. 初始化HttpWebRequest对象
                webRequest.Method = "POST";
                webRequest.ContentType = "application/json";
                webRequest.Timeout = 10*1000;
                webRequest.ContentLength = byteData.Length;
                webRequest.Timeout = 10*1000;
                webRequest.Headers.Add(HttpRequestHeader.Authorization, Config.Instance.Token);
                //3. 附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。)
                var newStream = webRequest.GetRequestStream();//创建一个Stream,赋值是写入HttpWebRequest对象提供的一个stream里面
                newStream.Write(byteData, 0, byteData.Length);
                newStream.Flush();
                newStream.Close();
                webRequest.Method = requestMethod;
                webRequest.Timeout = 10 * 1000;
                if (token != null)
                {
                    //对应微信网址
                    webRequest.Headers.Add(HttpRequestHeader.Authorization, token);
                }
                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)
                    if (stream == null)
                    {
                        return null;
                    }
@@ -276,13 +326,13 @@
                }
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.Message);
            {
#if DEBUG
                System.Console.WriteLine(e.Message);
#endif
                return null;
            }
        }
#if iOS
        /// <summary>
        /// 获取iOS-APP版本信息
@@ -346,13 +396,14 @@
                        return null;
                    }
                    int MaxIndex = 0;
                    int NewID = 0;
                    int NewVersion = 0;
                    for (int i = 0; i < responeData.pageData.Count; i++)
                    {
                        var apkInfo = responeData.pageData[i];
                        if (int.Parse(apkInfo.Id) > NewID)
                        var version = int.Parse(apkInfo.FirmwareVersion.Replace(".", ""));
                        if (version > NewVersion)
                        {
                            NewID = int.Parse(apkInfo.Id);
                            NewVersion = version;
                            MaxIndex = i;
                        }
                    }