Example #1
0
 public void LoginInit()
 {
     loginReturned = false;
     loginTimer = new DispatcherTimer();
     lr = new LoginResponce();
     loginTimer.Interval = TimeSpan.FromSeconds(10);
 }
Example #2
0
        public void GetGameInfo()
        {
            LoginInit();

            GlobalVars.userid = 0;


            Uri loginPath = new Uri(GlobalVars.WebServer + "/gameinfo/liardice");

            WebClient loginWC = new WebClient();
            loginWC.Encoding = Encoding.UTF8;

            loginWC.DownloadStringCompleted += (sender, e) =>
            {
                if (loginReturned)
                {
                    return;
                }
                loginReturned = true;
                if (e.Error != null)
                {
                    lr = new LoginResponce() { code = 404, content = new  ResLoginContent() { message = e.Error.Message } };
                }
                else
                {
                    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(e.Result));
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(LoginResponce));
                    lr = (LoginResponce)serializer.ReadObject(ms);
                }
                if (lr.code == 200)
                {
                    loginSuccess(lr.content as ResLoginContent);
                }
                else
                {
                    loginFailed(lr.content as ResLoginContent);
                }
            };
            loginWC.DownloadStringAsync(loginPath);

            loginTimer.Tick += (sen, er) =>
            {
                if (loginReturned)
                    return;
                loginTimer.Stop();
                loginReturned = true;
                lr = new LoginResponce() { code = 400, content = new ResLoginContent() { message = "连接服务器超时." } };
                loginFailed(lr.content as ResLoginContent);
            };
            loginTimer.Start();
        }
Example #3
0
        public void Login(string username, string password, MainPage mp)
        {
            LoginInit();

            GlobalVars.userid = 0;

            if (!CheckUserNameFormat(username))
            {
                lr.code = 101;
                lr.content.message = "用户名格式不正确";
                loginFailed(lr.content as ResLoginContent);
                return;
            }
            if (!CheckPasswordFormat(password))
            {
                lr.code = 102;
                lr.content.message = "密码长度应为6—20";
                loginFailed(lr.content as ResLoginContent);
                return;
            }

            password = GlobalVars.userRegisterHelper.GetMd5Hash(password);

            StringBuilder parameters = new StringBuilder();
            parameters.AppendFormat("{0}={1}", "username", HttpUtility.UrlEncode(username));
            parameters.AppendFormat("&{0}={1}", "password", HttpUtility.UrlEncode(password));

            Uri loginPath = new Uri(GlobalVars.WebServer + "/login");

            WebClient loginWC = new WebClient();
            loginWC.Headers["Content-Type"] = "application/x-www-form-urlencoded";
            loginWC.Encoding = Encoding.UTF8;

            loginWC.UploadStringCompleted += (sender, e) =>
            {
                if (loginReturned)
                {
                    return;
                }
                loginReturned = true;
                if (e.Error != null)
                {
                    lr = new LoginResponce() { code = 404, content = new  ResLoginContent() { message = e.Error.Message } };
                }
                else
                {
                    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(e.Result));
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(LoginResponce));
                    lr = (LoginResponce)serializer.ReadObject(ms);
                }
                if (lr.code == 200)
                {
                    loginSuccess(lr.content as ResLoginContent);
                }
                else
                {
                    loginFailed(lr.content as ResLoginContent);
                }
            };
            loginWC.UploadStringAsync(loginPath, "POST", parameters.ToString());

            loginTimer.Tick += (sen, er) =>
            {
                if (loginReturned)
                    return;
                loginTimer.Stop();
                loginReturned = true;
                lr = new LoginResponce() { code = 400, content = new ResLoginContent() { message = "连接服务器超时." } };
                loginFailed(lr.content as ResLoginContent);
            };
            loginTimer.Start();
        }