Пример #1
0
 /// <summary>
 /// 获取联系人列表
 /// </summary>
 private void GetAllPassenger()
 {
     //System.Threading.Thread.Sleep(5000);
     /********************************更新***************************************/
     #region 获取联系人
     modifyAction.GetPassenger((str) =>
     {
         var returnString = translation.TranslationHtmlEx(str);
         if (returnString["data"]["normal_passengers"] == null)
         {
             MessageBox.Show("获取联系人失败!\r\n" + returnString["data"]["exMsg"].ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             //opcmd.HideOpaqueLayer();  //隐藏遮挡层
             return;
         }
         var htmlTrans = new HTML_Translation();
         htmlTrans.TranslationPassengerJson(str, (passengerList) =>
         {
             DeterMineCall(() =>
             {
                 if (passengerList != null)
                 {
                     dgvPassenger.DataSource = passengerList;
                     //opcmd.HideOpaqueLayer();  //隐藏遮挡层
                 }
             });
         });
     }, _cookieContainer);
     #endregion
 }
Пример #2
0
 private void BeginGetUncompeleteOrder()
 {
     orderSelectAction.QueryMyOrderNoComplete((str) =>
     {
         try
         {
             System.Threading.Thread.Sleep(3333);
             var returnString = translation.TranslationHtmlEx(str);
             if (str.IndexOf("data") > -1)
             {
                 _orderData = GetOrderItems(returnString);
                 DeterMineCall(() =>
                 {
                     _BindingData = new BindingList <MyOrderData>(_orderData);
                     dgvUnfinisedOrder.DataSource = _BindingData;
                     lblInfo.Text = "加载完成";
                 });
             }
             else
             {
                 DeterMineCall(() =>
                 {
                     lblInfo.Text = "加载完成,您没有未完成的订单";
                 });
             }
         }
         finally
         {
             DeterMineCall(() => { oc.HideOpaqueLayer(); });
         }
     }, _cookieContainer);
 }
Пример #3
0
        protected void InitTokenDatasDTO(CookieContainer cookieContainer, string postData)
        {
            TokenDatas.Clear();
            var submitAction = new SubmitOrderAction();
            var htmlTran     = new HTML_Translation();

            submitAction.PostData = postData;
            submitAction.EnterSubmitPage((str) =>
            {
                var returnString = htmlTran.TranslationHtmlEx(str);
                if (returnString["messages"].Any())
                {
                    if (str.Contains("未完成订单"))
                    {
                        TokenDatas["errMsg"] = "你有未完成的订单等待处理";
                        return;
                    }
                    else
                    {
                        TokenDatas["errMsg"] = "获取Token失败";
                        return;
                    }
                }
                string tokenHtml    = submitAction.GetTokenFromSubmitPage(cookieContainer);
                TokenDatas["Token"] =
                    System.Text.RegularExpressions.Regex.Match(tokenHtml,
                                                               "(?<=var globalRepeatSubmitToken = ')[0-9abcdefABCDEF]{32}").ToString();
                TokenDatas["leftTicket"] =
                    System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='leftTicketStr':')[0-9A-Za-z]{30,50}")
                    .ToString();
                TokenDatas["keyCheck"] =
                    System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='key_check_isChange':')[0-9A-Za-z]*")
                    .ToString();
                TokenDatas["trainLocation"] =
                    System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='train_location':')[^']*").ToString();
                TokenDatas["purposeCodes"] =
                    System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='purpose_codes':')[^']*").ToString();
                TokenDatas["ticketInfoForPassengerForm"] =
                    System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<=ticketInfoForPassengerForm=)[^;]*")
                    .ToString()
                    .Replace("'", "\"");
                var javaObj = htmlTran.TranslationHtmlEx(TokenDatas["ticketInfoForPassengerForm"].ToString());
                TokenDatas["queryLeftNewDetailDTO"] = javaObj["queryLeftNewDetailDTO"] as JObject;

                if (TokenDatas["Token"] != null && TokenDatas["Token"].ToString() != "" &&
                    TokenDatas["leftTicket"] != null && TokenDatas["leftTicket"].ToString() != "")
                {
                    _dataReady = true;
                }
                else
                {
                    _dataReady = false;
                }
            }, cookieContainer);
        }
Пример #4
0
        protected bool ChencSubmitDatas(CookieContainer cookieContainer, String postData)
        {
            var submitAction = new SubmitOrderAction();
            var translation  = new HTML_Translation();

            submitAction.PostData = postData;
            var str          = submitAction.CheckOrderInfoEx(cookieContainer);
            var returnString = translation.TranslationHtmlEx(str);

            if (returnString["data"]["errMsg"] != null && returnString["data"]["errMsg"].ToString() != "")
            {
                return(_checkState = false);
            }
            if (str.Contains("取消次数过多"))
            {
                return(_checkState = false);
            }
            if (returnString["data"]["get608Msg"] != null)
            {
                return(_checkState = false);
            }
            if (returnString["messages"].Any())
            {
                return(_checkState = false);
            }
            return(_checkState = true);
        }
Пример #5
0
        protected void InitPassengerDTO(CookieContainer cookieContainer, String token)
        {
            var passengerAction = new GetPassengerAction();

            passengerAction.PostData = string.Format("_json_att=&REPEAT_SUBMIT_TOKEN={0}", token);
            passengerAction.GetPassengersAllJson((strPassenger) =>
            {
                var htmlTrans     = new HTML_Translation();
                var returnStrings = htmlTrans.TranslationHtmlEx(strPassenger);
                if (returnStrings["data"]["normal_passengers"].Count() > 0)
                {
                    _dataStatus = true;
                }
                else
                {
                    _dataStatus = false;
                }
            }, cookieContainer);
        }
Пример #6
0
        public void GetPassengersFromServer()
        {
            var modifyAction = new ModifyPassengerAction();
            var translation  = new HTML_Translation();

            modifyAction.GetPassenger((strPassengers) =>
            {
                var returnString = translation.TranslationHtmlEx(strPassengers);
                if (returnString["data"]["normal_passengers"] == null)
                {
                    return;
                }

                translation.TranslationPassengerJson(strPassengers, (passengerSource) =>
                {
                    _passengers = passengerSource;
                });
            }, _cookieContainer);
        }
Пример #7
0
        private void btnLogin_Click(object sender, EventArgs e)
        {
            lblInfomation.Text = "";
            if (cboName.Text.Length < 4)
            {
                return;
            }
            if (txtPwd.Text.Length < 4)
            {
                return;
            }
            if (txtRandCode.TextLength < 4)
            {
                return;
            }
            btnLogin.Enabled = false;
            btnLogin.Text    = "正在登录";
            Application.DoEvents();
            string name     = cboName.Text;
            string pwd      = txtPwd.Text;
            var    htmlTran = new HTML_Translation();

            //采用同步方式登录
            _la.PostData = string.Format(@"loginUserDTO.user_name={0}&userDTO.password={1}&randCode={2}",
                                         name, pwd, txtRandCode.Text);
            var    strHash = _la.BeginLogin();
            string strHtml = "";
            var    cookie  = new CookieContainer();

            if (strHash == null)
            {
                MessageBox.Show("难道12306又挂了?", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question);
                return;
            }
            foreach (var v in strHash.Keys)
            {
                cookie  = (CookieContainer)v;
                strHtml = strHash[v].ToString();
                break;
            }
            if (strHtml == "")
            {
                lblInfomation.Text = "登录失败!";
                btnLogin.Enabled   = true;
                btnLogin.Text      = "登录";
                txtRandCode.Focus();
                GetRandCodeImg();
                return;
            }
            try
            {
                var returnString = htmlTran.TranslationHtmlEx(strHtml);
                if (returnString["messages"].Any())
                {
                    GetRandCodeImg();
                    DeterMineCall(() =>
                    {
                        lblInfomation.Text = returnString["messages"][0].ToString();
                        this.BeginInvoke(new Action(FormShake));
                        txtRandCode.Text = "";
                        btnLogin.Enabled = true;
                        btnLogin.Text    = "登录";
                        txtRandCode.Focus();
                        Application.DoEvents();
                    });
                    return;
                }
                //var loginCheck = returnString["data"] as JavaScriptObject;
                if (returnString["data"] != null && returnString["data"]["loginCheck"].ToString() == "Y")
                {
                    if (chkUserInfo.Checked)
                    {
                        var dc = new DesCryption();
                        ConfigInfo.conf.username = name;
                        ConfigInfo.conf.password = dc.EncryptString(pwd, name);

                        ConfigInfo.savetofile(ConfigInfo.conf.username);
                        string path = AppDomain.CurrentDomain.BaseDirectory + "data\\" + name;
                        if (!System.IO.Directory.Exists(path))
                        {
                            System.IO.Directory.CreateDirectory(path);
                        }
                        LocalCookie.WriteCookiesToDisk(path + "\\usrCookie.cfg", LoginAction.cookieContainer);
                    }

                    btnLogin.Enabled = true;
                    btnLogin.Text    = "登录";
                    this.Hide();
                    //                MessageBox.Show(@"温馨提示:
                    //
                    //1. 自2013年1月4日起,火车票互联网、电话订票预售期延长至20天(含当日),代售点和车站部分售票窗口预售期延长至18天(含当日)。
                    //
                    //2. 自2013年1月1日起,通过电话预订车票的旅客可凭订票时乘车人有效身份证件,到全国任一车站窗口或代售点换取已订车票。当日12:00前已订车票于第二日12:00前取有效;当日12:00后已订车票于第二日24:00前取有效。
                    //
                    //
                    //请广大旅客注意电话订票取票时间和范围、互联网和电话订票起售时间、火车票预售期的变化,合理安排好购票计划。", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    var selectForm = new formSelectTicket(cookie)
                    {
                        ThisCookie = cookie,
                        /*formSelectTicket.cookieContainer = cookie;*/
                        UserName = cboName.Text
                    };
                    selectForm.Show();
                }
                else
                {
                    GetRandCodeImg();
                    lblInfomation.Text = "登录失败";
                    txtRandCode.Text   = "";
                    btnLogin.Enabled   = true;
                    btnLogin.Text      = "登录";
                    txtRandCode.Focus();
                    return;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("23:00至07:00为系统维护时间!", "温馨提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            finally { }
        }
Пример #8
0
        //获取Token
        private void GetToken()
        {
            DetermineCall(() =>
            {
                lblState1.Text = "正在获取Token(由于官方服务里返回结果时快时慢,等待时间可能很长很长很长)...";
                Application.DoEvents();
            });
            submitAction.PostData = _postData;

            submitAction.EnterSubmitPage((str) =>
            {
                DetermineCall(() =>
                {
                    var returnString = translation.TranslationHtmlEx(str);
                    if (returnString["messages"].Any())
                    {
                        //if (str.Contains("未完成订单"))
                        //{
                        MessageBox.Show(returnString["messages"][0].ToString(), "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        lblState1.Text = returnString["messages"][0].ToString();
                        Application.DoEvents();
                        return;
                        //}
                    }
                    //else
                    //{
                    //    MessageBox.Show("获取Token失败!");
                    //    return;
                    //}


                    submitAction.GetTokenFromSubmitPageSync((tokenHtml) =>
                    {
                        if (!string.IsNullOrEmpty(tokenHtml))
                        {
                            DetermineCall(() =>
                            {
                                _tokenAndLeftTicket["Token"]         = System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<=var globalRepeatSubmitToken = ')[0-9abcdefABCDEF]{32}").ToString();
                                _tokenAndLeftTicket["leftTicket"]    = System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='leftTicketStr':')[0-9A-Za-z]{30,50}").ToString();
                                _tokenAndLeftTicket["keyCheck"]      = System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='key_check_isChange':')[0-9A-Za-z]*").ToString();
                                _tokenAndLeftTicket["trainLocation"] = System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='train_location':')[^']*").ToString();
                                _tokenAndLeftTicket["purposeCodes"]  = System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<='purpose_codes':')[^']*").ToString();
                                _tokenAndLeftTicket["ticketInfoForPassengerForm"] = System.Text.RegularExpressions.Regex.Match(tokenHtml, "(?<=ticketInfoForPassengerForm=)[^;]*").ToString().Replace("'", "\"");

                                if (_tokenAndLeftTicket["Token"] == null || _tokenAndLeftTicket["Token"].ToString() == "" || _tokenAndLeftTicket["ticketInfoForPassengerForm"] == null || _tokenAndLeftTicket["ticketInfoForPassengerForm"].ToString() == "")
                                {
                                    MessageBox.Show("获取Token失败!");
                                    lblState1.Text = "获取Token失败";
                                    Application.DoEvents();
                                    return;
                                }
                            });

                            var javaObj = translation.TranslationHtmlEx(_tokenAndLeftTicket["ticketInfoForPassengerForm"].ToString());
                            _tokenAndLeftTicket["queryLeftNewDetailDTO"] = javaObj["queryLeftNewDetailDTO"] as JObject;
                            GetRandCodeImg();
                            DetermineCall(() =>
                            {
                                fpPrice.Controls.Clear();
                                lblState1.Text = "正在加载余票信息...";
                                Application.DoEvents();
                                GetLeftTicketCount(); //加载余票信息
                                if (flplPassengers.Controls.Count <= 1)
                                {
                                    LoadPassengers(); //加载联系人
                                }
                                lblState1.Text = "";
                                Application.DoEvents();
                                BeginSafeCount();
                            });
                        }
                        else
                        {
                            DetermineCall(() => {
                                MessageBox.Show("获取该车次信息出现异常,请重新提交订单");
                                return;
                            });
                        }
                    }, _cookieContainer);
                });
                //获取联系人
                //DetermineCall(() => { lblPassenger.Text = "乘客:正在加载联系人,请稍等..."; Application.DoEvents(); });
                //var passengerAction = new GetPassengerAction();
                //passengerAction.PostData = string.Format("_json_att=&REPEAT_SUBMIT_TOKEN={0}", _tokenAndLeftTicket["Token"].ToString());
                //passengerAction.GetPassengersAllJson((strPassenger) =>
                //{

                //    var htmlTrans = new HTML_Translation();
                //    var returnStrings = htmlTrans.TranslationHtmlEx(strPassenger);
                //    if (returnStrings["data"]["normal_passengers"].Count() > 0)
                //        htmlTrans.TranslationPassengerJson(strPassenger, (passengerList) =>
                //        {
                //            //new LogInfo().WriteStringToTxt(_user, "JsonPassengers", strPassenger);
                //            //_passengersNew = passengerList;
                //            //加载验证码

                //            //LoadPassengers();
                //        });
                //    else
                //    {
                //        DetermineCall(() => { lblPassenger.Text = "乘客:联系人加载失败!"; Application.DoEvents(); });
                //    }
                //}, _cookieContainer);
            }, _cookieContainer);
        }