Beispiel #1
0
        /// <summary>
        /// 下单
        /// </summary>
        public string SubmitOrderRequest(ReqSubmitOrder reqSubmit)
        {
            string fromDate        = reqSubmit.fromDate;       //购票日期
            string fromStation     = reqSubmit.fromStationShort;
            string toDate          = reqSubmit.toDate;         //当前日期
            string toStation       = reqSubmit.toStationShort; //"北京,BJP";
            string wfdc_flag       = reqSubmit.wfdc_flag;      //dc表示单程车票 wc 往返车票
            string fromStationName = reqSubmit.fromStationName;
            string toStationName   = reqSubmit.toStationName;  // "北京";
            //注意,需要解码
            string         secretStr = System.Web.HttpUtility.UrlDecode(reqSubmit.secretStr);
            RequestPackage request   = new RequestPackage();

            request.Method     = EHttpMethod.Post.ToString();
            request.RefererURL = GetRefererURL(fromStationName, fromStation, fromDate, toStationName, toStation, wfdc_flag);
            request.RequestURL = "/otn/leftTicket/submitOrderRequest";
            request.Params.Add("secretStr", secretStr);
            request.Params.Add("train_date", fromDate);
            request.Params.Add("back_train_date", toDate);
            request.Params.Add("tour_flag", wfdc_flag);
            request.Params.Add("purpose_codes", reqSubmit.purpose_codes);
            request.Params.Add("query_from_station_name", fromStationName);
            request.Params.Add("query_to_station_name", toStationName);
            request.Params.Add("undefined", "");
            SubmitOrderCookie(fromDate, fromStation, toDate, toStation, wfdc_flag);
            ArrayList list = TrainHttpContext.Send(request);

            if (list.Count == 1)
            {
                return(Encoding.UTF8.GetString(list[0] as byte[]));
            }
            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #2
0
        /// <summary>
        /// 登陆
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="loginPwd"></param>
        /// <param name="jsonResult"></param>
        /// <returns></returns>
        public ResponseLogin PostLogin(string loginName, string loginPwd, out string jsonResult)
        {
            jsonResult = string.Empty;
            ResponseLogin  package = null;
            RequestPackage request = new RequestPackage();

            request.Params.Add("username", System.Web.HttpUtility.UrlEncode(loginName));
            request.Params.Add("password", System.Web.HttpUtility.UrlEncode(loginPwd));
            request.Params.Add("appid", System.Web.HttpUtility.UrlEncode("otn"));
            request.RequestURL = "/passport/web/login";
            request.RefererURL = "/otn/login/init";
            request.Method     = "post";
            ArrayList list = TrainHttpContext.Send(request);

            if (list.Count == 2)
            {
                jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                package    = JsonConvert.DeserializeObject <ResponseLogin>(jsonResult);
                Log.Write(LogLevel.Info, jsonResult);
            }
            else
            {
                Log.Write(LogLevel.Info, list.ToString());
            }
            return(package);
        }
Beispiel #3
0
        /// <summary>
        /// 获取验证码
        /// </summary>
        public Tuple <int, string, Stream> GetValidateCode()
        {
            var    code    = 888;
            string imgName = string.Empty;
            Stream stream  = null;

            try
            {
                //RequestPackage request = new RequestPackage("/otn/login/init");
                //ArrayList list = TrainHttpContext.GetHtmlData(request);
                //if (list.Count == 3)
                //{
                RequestPackage request = new RequestPackage();
                request.RequestURL = "/passport/captcha/captcha-image";
                request.Params.Add("login_site", "E");
                request.Params.Add("module", "login");
                request.Params.Add("rand", "sjrand");
                request.Params.Add("0.21660476430599007", "");
                imgName = Guid.NewGuid().ToString() + ".png";
                stream  = TrainHttpContext.DownloadCode(request);
                string url = @"..\Material\Img\code";
                SaveValidateCode(stream, url);
                //}
                //else

                //{
                //    Log.Write(LogLevel.Info, "请求/otn/login/init失败");
                //}
            }
            catch (Exception ex)
            {
                Log.Write(LogLevel.Error, ex.Message, ex);
            }
            return(new Tuple <int, string, Stream>(code, imgName, stream));
        }
Beispiel #4
0
        /// <summary>
        /// ConfirmSingleForQueue
        /// </summary>
        public string ConfirmSingleForQueue()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Post.ToString();
            request.RefererURL = "/otn/confirmPassenger/initDc";
            request.RequestURL = "/otn/confirmPassenger/ConfirmSingleForQueue";
            request.Params.Add("passengerTicketStr", "O,0,1,杨杰,1,4209***********015,,N,2e69718bd2aac5c23e2437ce2c7298824373620db3b0f445164bd3b7eb390c36");
            request.Params.Add("oldPassengerStr", "杨杰,1,4209***********015,1_");
            request.Params.Add("randCode", "");
            request.Params.Add("purpose_codes", "00");
            request.Params.Add("key_check_isChange", "19222C51E2716A80B9D5FF165943FCB2E4D434D2F6A17F1EA366CD27");
            request.Params.Add("leftTicket", "%2FIdT30sdMNlvjDYWzqTjuS5nAXQPCncfmH1H4z7h3MqJ2k%2Fc");
            request.Params.Add("train_location", "H6");
            request.Params.Add("choose_seats", "1C");
            request.Params.Add("seatDetailType", "000");
            request.Params.Add("whatsSelect", "1");
            request.Params.Add("roomType", "00");
            request.Params.Add("dwAll", "N");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "b5a05749242999dc0483196134d0358c");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #5
0
        /// <summary>
        /// 验证验证码
        /// 版本:201909
        /// </summary>
        public ResponseCaptchaCheck PostCaptchaCheck201909(string point, out string jsonResult)
        {
            jsonResult = string.Empty;
            ResponseCaptchaCheck package = null;
            RequestPackage       request = new RequestPackage();

            try
            {
                request.Params.Add("rand", System.Web.HttpUtility.UrlEncode("sjrand"));
                request.Params.Add("answer", System.Web.HttpUtility.UrlEncode(point));
                request.Params.Add("login_site", System.Web.HttpUtility.UrlEncode("E"));
                request.Params.Add("_", TimeHelp.GetTimeStamp(DateTime.Now));
                request.Params.Add("callback", TrainHttpContext.callback);
                request.RequestURL = "/passport/captcha/captcha-check";
                request.RefererURL = "https://kyfw.12306.cn/otn/resources/login.html";
                request.Method     = "post";
                ArrayList list = TrainHttpContext.Send(request);
                if (list.Count == 2)
                {
                    jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                    var resStr = jsonResult.CallBackJson();
                    package = JsonConvert.DeserializeObject <ResponseCaptchaCheck>(resStr);
                    Log.Write(LogLevel.Info, jsonResult);
                }
            }
            catch (Exception ex)
            {
                package.result_message = "验证错误";
                package.status_code    = 0000;
                Log.Write(LogLevel.Error, "验证验证码出错");
            }
            return(package);
        }
Beispiel #6
0
        /// <summary>
        /// 验证验证码
        /// </summary>
        public ResponseCaptchaCheck PostCaptchaCheck(string point, out string jsonResult)
        {
            jsonResult = string.Empty;
            ResponseCaptchaCheck package = null;
            RequestPackage       request = new RequestPackage();

            try
            {
                request.Params.Add("rand", System.Web.HttpUtility.UrlEncode("sjrand"));
                request.Params.Add("answer", System.Web.HttpUtility.UrlEncode(point));
                request.Params.Add("login_site", System.Web.HttpUtility.UrlEncode("E"));
                request.Params.Add("rand", System.Web.HttpUtility.UrlEncode("sjrand"));
                request.RequestURL = "/passport/captcha/captcha-check";
                request.RefererURL = "/otn/login/init";
                request.Method     = "post";
                ArrayList list = TrainHttpContext.Send(request);
                if (list.Count == 2)
                {
                    jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                    package    = JsonConvert.DeserializeObject <ResponseCaptchaCheck>(jsonResult);
                    Log.Write(LogLevel.Info, jsonResult);
                }
            }
            catch (Exception)
            {
                package.result_message = "验证错误";
                package.status_code    = 0000;
            }
            return(package);
        }
Beispiel #7
0
        /// <summary>
        /// 登陆
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="loginPwd"></param>
        /// <param name="jsonResult"></param>
        /// <returns></returns>
        public ResponseLogin PostLogin201909(string loginName, string loginPwd, string point, out string jsonResult)
        {
            jsonResult = string.Empty;
            ResponseLogin  package = null;
            RequestPackage request = new RequestPackage();

            request.Params.Add("username", System.Web.HttpUtility.UrlEncode(loginName));
            request.Params.Add("password", System.Web.HttpUtility.UrlEncode(loginPwd));
            request.Params.Add("appid", System.Web.HttpUtility.UrlEncode("otn"));
            request.Params.Add("answer", System.Web.HttpUtility.UrlEncode(point));
            request.RequestURL = "/passport/web/login";
            request.RefererURL = "/otn/resources/login.html";
            request.Method     = "post";

            var RAIL_EXPIRATION = new Cookie("RAIL_EXPIRATION", TimeHelp.GetTimeStamp(DateTime.Now.AddDays(3)), "/", ".12306.cn");
            var RAIL_DEVICEID   = new Cookie("RAIL_DEVICEID", "K_89QjQR37H4I9URxTkeSVTXd2WIyViZrlUuxJA5A8p7xCM_3JGueLa4zc2t_T69vTHb1aDx-3ymUdCUrLXbPcb68Z-4pQAYOmF8i6rU0Nk7Q6HIfzMVHY5PIQPK16sfWaJc-Z08UcYMLepVR56jG1NrsBYZooob", "/", ".12306.cn");

            TrainHttpContext.Cookie.Add(RAIL_EXPIRATION);
            TrainHttpContext.Cookie.Add(RAIL_DEVICEID);
            ArrayList list = TrainHttpContext.Send(request);

            if (list.Count == 2)
            {
                jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                package    = JsonConvert.DeserializeObject <ResponseLogin>(jsonResult);
                Log.Write(LogLevel.Info, jsonResult);
            }
            else
            {
                Log.Write(LogLevel.Info, list.ToString());
            }
            return(package);
        }
Beispiel #8
0
        /*
         * 订单接口流程
         * 1./otn/login/checkUser 检查登陆
         * 2./otn/leftTicket/submitOrderRequest 提交订单请求 cookie参数有tk
         * 3./otn/confirmPassenger/getPassengerDTOs 乘车人信息
         * 4./otn/confirmPassenger/checkOrderInfo
         * 5./otn/confirmPassenger/getQueueCount
         * 6./otn/confirmPassenger/confirmSingleForQueue
         * 7./otn/confirmPassenger/queryOrderWaitTime
         * 8./otn/confirmPassenger/resultOrderForDcQueue
         */



        /// <summary>
        /// 未完成订单查询
        /// </summary
        public void NoCompleteOrderQuery()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Get.ToString();
            request.RefererURL = "/otn/leftTicket/init";
            request.RequestURL = "/otn/queryOrder/queryMyOrderNoComplete";
            request.Params.Add("_json_att=", "");
            ArrayList list       = TrainHttpContext.Send(request);
            string    jsonString = Encoding.UTF8.GetString(list[1] as byte[]);
            // reulst = JsonHelper.Deserialize<ResponseTicketQuery>(jsonString);
        }
Beispiel #9
0
        /// <summary>
        /// 获取Banner信息
        /// </summary>
        /// <returns></returns>
        public string GetLoginBanner()
        {
            RequestPackage request = new RequestPackage();

            request.RequestURL = "/otn/index12306/getLoginBanner";
            request.RefererURL = "/otn/resources/login.html";
            request.Method     = "GET";
            ArrayList list       = TrainHttpContext.Send(request);
            string    jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);

            Log.Write(LogLevel.Info, jsonResult);
            return(jsonResult);
        }
Beispiel #10
0
        /// <summary>
        /// 请求conf
        /// </summary>
        /// <returns></returns>
        public string PostConfLogin()
        {
            RequestPackage request = new RequestPackage();

            request.RequestURL = "/otn/login/conf";
            request.RefererURL = "/otn/resources/login.html";
            request.Method     = "post";
            ArrayList list       = TrainHttpContext.Send(request);
            string    jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);

            Log.Write(LogLevel.Info, jsonResult);
            return(jsonResult);
        }
Beispiel #11
0
        /// <summary>
        /// 主页
        /// </summary>
        /// <returns></returns>
        public string PostInitMy12306()
        {
            RequestPackage request = new RequestPackage();

            request.RequestURL = "/otn/index/initMy12306Api";
            request.RefererURL = "/otn/view/index.html";
            request.Method     = "post";
            ArrayList list       = TrainHttpContext.Send(request);
            string    jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);

            Log.Write(LogLevel.Info, jsonResult);
            return(jsonResult);
        }
Beispiel #12
0
        /// <summary>
        /// 返回订单队列
        /// </summary>
        public string ResultOrderForWcQueue()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Post.ToString();
            request.RefererURL = "/otn/confirmPassenger/initWc";
            request.RequestURL = "/otn/confirmPassenger/resultOrderForWcQueue";
            request.Params.Add("orderSequence_no", "EK17818578");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "6a935f7b30fc20539538d245e07f9f3e");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #13
0
        /// <summary>
        /// QueryOrderWaitTime查询等待
        /// </summary>
        public string QueryOrderWaitTime()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Get.ToString();
            request.RefererURL = "/otn/confirmPassenger/initDc";
            request.RequestURL = "/otn/confirmPassenger/ConfirmSingleForQueue";
            request.Params.Add("random", TimeHelp.GetTimeStamp(DateTime.Now));
            request.Params.Add("tourFlag", "dc");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "b5a05749242999dc0483196134d0358c");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #14
0
        /// <summary>
        /// resultOrderForDcQueue返回消息队列结果
        /// </summary>
        public string ResultOrderForDcQueue()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Post.ToString();
            request.RefererURL = "/otn/confirmPassenger/initDc";
            request.RequestURL = "/otn/confirmPassenger/resultOrderForDcQueue";

            request.Params.Add("orderSequence_no", "EK98416576");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "b5a05749242999dc0483196134d0358c");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #15
0
        /// <summary>
        /// 查询订单消息
        /// </summary>
        public string QueryOrderWaitTime201909()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Get.ToString();
            request.RefererURL = "/otn/confirmPassenger/initWc";
            request.RequestURL = "/otn/confirmPassenger/queryOrderWaitTime";
            request.Params.Add("random", "1550542267648");
            request.Params.Add("tourFlag", "wc");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "6a935f7b30fc20539538d245e07f9f3e");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
        /// <summary>
        /// 获取tk
        /// </summary>
        public ResponseUamtk PostUamtk(out string jsonResult)
        {
            RequestPackage request = new RequestPackage();

            request.Params.Add("appid", System.Web.HttpUtility.UrlEncode("otn"));
            request.RequestURL = "/passport/web/auth/uamtk";
            request.RefererURL = "/otn/passport?redirect=/otn/login/userLogin";
            request.Method     = "post";
            ArrayList list = TrainHttpContext.Send(request);

            jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
            ResponseUamtk package = JsonConvert.DeserializeObject <ResponseUamtk>(jsonResult);

            Log.Write(LogLevel.Info, jsonResult);
            return(package);
        }
Beispiel #17
0
        /// <summary>
        /// 取消订单
        /// </summary>
        public void OrderCancel()
        {
            string parOrder = "{\"sequence_no\":\"EK17818578\", \"order_date\":\"2019-02-19 00:00:00\", \"ticket_totalnum\":1, \"ticket_price_all\":53800.0, \"epayFlag\":\"Y\", \"orders\":[{\"sequence_no\":\"EK17818578\", \"order_date\":\"2019-02-19 00:00:00\", \"ticket_totalnum\":1, \"ticket_price_all\":53800.0, \"tickets\":[{\"stationTrainDTO\":{\"station_train_code\":\"G1001\", \"from_station_telecode\":\"WHN\", \"from_station_name\":\"武汉\", \"start_time\":\"1970-01-01 07:25:00\", \"to_station_telecode\":\"IOQ\", \"to_station_name\":\"深圳北\", \"arrive_time\":\"1970-01-01 12:09:00\", \"distance\":\"1171\"},\"passengerDTO\":{\"passenger_name\":\"金曼城\",\"passenger_id_type_code\":\"1\",\"passenger_id_type_name\":\"中国居民身份证\",\"passenger_id_no\":\"360426199801130058\",\"mobile_no\":\"\",\"total_times\":\"98\",\"gat_born_date\":\"\",\"gat_valid_date_start\":\"\",\"gat_valid_date_end\":\"\",\"gat_version\":\"\"},\"ticket_no\":\"EK17818578106003A\",\"sequence_no\":\"EK17818578\",\"batch_no\":\"1\",\"train_date\":\"2019-02-21 00:00:00\",\"coach_no\":\"06\",\"coach_name\":\"06\",\"seat_no\":\"003A\",\"seat_name\":\"03A号\",\"seat_flag\":\"0\",\"seat_type_code\":\"O\",\"seat_type_name\":\"二等座\",\"ticket_type_code\":\"1\",\"ticket_type_name\":\"成人票\",\"reserve_time\":\"2019-02-19 00:00:00\",\"limit_time\":\"2019-02-19 10:11:10\",\"lose_time\":\"2019-02-19 10:41:10\",\"pay_limit_time\":\"2019-02-19 10:41:10\",\"realize_time_char\":\"2019-02-19 10:11:10\",\"ticket_price\":53800.0,\"old_ticket_price\":0.0,\"return_total\":53800.0,\"return_cost\":0.0,\"eticket_flag\":\"Y\",\"pay_mode_code\":\"Y\",\"payOrderString\":\"2019-02-19 10:11:10\",\"payOrderId\":\"1EK17818578001001101110593\",\"amount\":\"53800\",\"amount_char\":1,\"start_train_date_page\":\"2019-02-21 07:25\",\"str_ticket_price_page\":\"538.0\",\"come_go_traveller_ticket_page\":\"N\",\"return_rate\":\"0\",\"return_deliver_flag\":\"N\",\"deliver_fee_char\":\"\",\"is_need_alert_flag\":false,\"is_deliver\":\"00\",\"dynamicProp\":\"\",\"return_fact\":0.0,\"fee_char\":\"\",\"sepcial_flags\":\"\",\"column_nine_msg\":\"\",\"integral_pay_flag\":\"N\",\"trms_price_rate\":\"\",\"trms_price_number\":\"\",\"trms_service_code\":\"\",\"if_cash\":\"0\"}],\"isNeedSendMailAndMsg\":\"N\",\"ticket_total_price_page\":\"538.0\",\"come_go_traveller_order_page\":\"N\",\"canOffLinePay\":\"N\",\"if_deliver\":\"N\"}]}";

            string orderRequest = "{ \"train_location\":\"N2\",\"train_date\":\"2019-02-21 00:00:00\",\"train_no\":\"4e000G10010C\",\"station_train_code\":\"G1001\",\"from_station_telecode\":\"WHN\",\"to_station_telecode\":\"IOQ\",\"from_station_name\":\"武汉\",\"to_station_name\":\"深圳北\",\"seat_type_code\":\"O\",\"seat_detail_type_code\":\"0\",\"start_time\":\"1970-01-01 07:25:00\",\"end_time\":\"1970-01-01 12:09:00\",\"adult_num\":0,\"child_num\":0,\"student_num\":0,\"disability_num\":0,\"ticket_num\":0,\"id_mode\":\"Y\",\"reserve_flag\":\"A\",\"tour_flag\":\"wc\",\"reqIpAddress\":\"218.17.204.22\",\"reqTimeLeftStr\":\"00WHNIOQ武汉深圳北4e000G10010C2019-02-21G1001\",\"choose_seat\":\"1A\",\"isShowPassCode\":\"N&2&default\",\"passengerFlag\":\"1\",\"exchange_train_flag\":\"0\",\"channel\":\"E\"}";

            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Get.ToString();
            request.RefererURL = "/otn/payOrder/init?random=1550542271832";
            request.RequestURL = "/otn/payOrder/cancel";
            request.Params.Add("sequence_no", "EK17818578");
            request.Params.Add("parOrderDTOJson", parOrder);
            request.Params.Add("orderRequestDTOJson", orderRequest);
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "6a935f7b30fc20539538d245e07f9f3e");
            ArrayList list       = TrainHttpContext.Send(request);
            string    jsonString = Encoding.UTF8.GetString(list[1] as byte[]);
        }
Beispiel #18
0
        /// <summary>
        /// 订单验证
        /// </summary>
        public string CheckOrderInfo()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Post.ToString();
            request.RefererURL = "/otn/confirmPassenger/initDc"; //此数据是动态数据可能为initWc
            request.RequestURL = "/otn/confirmPassenger/checkOrderInfo";
            request.Params.Add("cancel_flag", "2");
            request.Params.Add("bed_level_order_num", "000000000000000000000000000000");
            request.Params.Add("passengerTicketStr", "杨杰,1,4209***********015,1_");
            request.Params.Add("tour_flag", "dc");
            request.Params.Add("randCode", "");
            request.Params.Add("whatsSelect", "1");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "6a935f7b30fc20539538d245e07f9f3e");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #19
0
        /// <summary>
        /// 完成订单(未出行)
        /// </summary>
        public void CompleteOrderQuery()
        {
            var            data    = new DateTime();
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Get.ToString();
            request.RefererURL = "/otn/leftTicket/init";
            request.RequestURL = "/otn/queryOrder/queryMyOrderNoComplete";
            request.Params.Add("come_from_flag", "my_order");
            request.Params.Add("pageIndex", "0");
            request.Params.Add("pageSize", "8");
            request.Params.Add("query_where", "G");
            request.Params.Add("queryStartDate", DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd"));
            request.Params.Add("queryEndDate", DateTime.Now.ToString("yyyy-MM-dd"));
            request.Params.Add("queryType", "1");
            request.Params.Add("sequeue_train_name", "");
            ArrayList list       = TrainHttpContext.Send(request);
            string    jsonString = Encoding.UTF8.GetString(list[1] as byte[]);
            // reulst = JsonHelper.Deserialize<ResponseTicketQuery>(jsonString);
        }
Beispiel #20
0
        /// <summary>
        /// 获取账号城市对应车站区号信息
        /// </summary>
        /// <returns></returns>
        public void GetAllCitys()
        {
            var response = new ResponsePassenger();

            try
            {
                RequestPackage request = new RequestPackage();
                request.RequestURL = "/otn/modifyUser/initQueryUserInfoApi";
                request.RefererURL = "/otn/view/information.html";
                request.Method     = "post";
                request.Params.Add("_json_att", string.Empty);
                ArrayList list       = TrainHttpContext.Send(request);
                string    jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                //response = JsonConvert.DeserializeObject<ResponsePassenger>(jsonResult);
            }
            catch (Exception ex)
            {
                Log.Write(LogLevel.Error, ex.Message, ex);
            }
        }
Beispiel #21
0
        /// <summary>
        /// 获取静态cookie
        /// </summary>
        /// <returns></returns>
        public void PostUamtkStatic()
        {
            string         jsonResult = string.Empty;
            RequestPackage request    = new RequestPackage();

            request.Params.Add("appid", System.Web.HttpUtility.UrlEncode("otn"));
            request.RequestURL = "/passport/web/auth/uamtk-static";
            request.RefererURL = "/otn/resources/login.html";
            request.Method     = "post";
            ArrayList list = TrainHttpContext.Send(request);

            if (list.Count == 2)
            {
                jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                Log.Write(LogLevel.Info, jsonResult);
            }
            else
            {
                Log.Write(LogLevel.Info, list.ToString());
            }
        }
Beispiel #22
0
        /// <summary>
        /// 确认提交队列
        /// </summary>
        public string ConfirmGoForQueue()
        {
            RequestPackage request = new RequestPackage();

            request.Method     = EHttpMethod.Post.ToString();
            request.RefererURL = "/otn/confirmPassenger/initWc";
            request.RequestURL = "/otn/confirmPassenger/confirmGoForQueue";
            request.Params.Add("train_date", "Thu Feb 21 2019 00:00:00 GMT+0800 (中国标准时间)");
            request.Params.Add("train_no", "4e000G10010C");
            request.Params.Add("stationTrainCode", "G1001");
            request.Params.Add("fromStationTelecode", "WHN");
            request.Params.Add("toStationTelecode", "IOQ");
            request.Params.Add("leftTicket", "onitNgro93bMM2EJQjC%2BzlVcTmI60RkiUCToolBjkTo5AEK6");
            request.Params.Add("purpose_codes", "00");
            request.Params.Add("train_location", "N2");
            request.Params.Add("_json_att", "");
            request.Params.Add("REPEAT_SUBMIT_TOKEN", "6a935f7b30fc20539538d245e07f9f3e");
            ArrayList list = TrainHttpContext.Send(request);

            return(Encoding.UTF8.GetString(list[1] as byte[]));
        }
Beispiel #23
0
        /// <summary>
        /// 获取apptk
        /// </summary>
        /// <param name="tk"></param>
        public ResponseUamauthClient PostUamauthClient(string tk, out string jsonResult)
        {
            RequestPackage request = new RequestPackage();

            request.Params.Add("tk", System.Web.HttpUtility.UrlEncode(tk));
            request.RequestURL = "/otn/uamauthclient";
            request.RefererURL = "/otn/passport?redirect=/otn/login/userLogin";
            request.Method     = "post";
            ArrayList list = TrainHttpContext.Send(request);

            jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
            ResponseUamauthClient package = JsonConvert.DeserializeObject <ResponseUamauthClient>(jsonResult);

            if (package.result_code.Equals("0"))
            {
                //var apptk = Regex.Replace(package.apptk, @"\s", "").Replace("-", "");
                //var tkCookie = new Cookie("tk", apptk, "/", "kyfw.12306.cn");
                //TrainHttpContext.Cookie.Add(tkCookie);
            }
            Log.Write(LogLevel.Info, jsonResult);
            return(package);
        }
        /// <summary>
        /// 获取验证码
        /// </summary>
        public Tuple <int, string> GetValidateCode(string url)
        {
            var    code = 888;
            string path = string.Empty;

            try
            {
                RequestPackage request = new RequestPackage("/otn/login/init");
                ArrayList      list    = TrainHttpContext.GetHtmlData(request);
                if (list.Count == 3)
                {
                    request.RequestURL = "/passport/captcha/captcha-image";
                    request.Params.Add("login_site", "E");
                    request.Params.Add("module", "login");
                    request.Params.Add("rand", "sjrand");
                    request.Params.Add("0.21660476430599007", "");
                    using (Stream stream = TrainHttpContext.DownloadCode(request))
                    {
                        path = list[2] + ".png";
                        if (SaveValidateCode(stream, Path.Combine(url, path)))
                        {
                            code = 0;
                        }
                    }
                }
                else
                {
                    Log.Write(LogLevel.Info, "请求/otn/login/init失败");
                }
            }
            catch (Exception ex)
            {
                Log.Write(LogLevel.Error, ex.Message, ex);
            }
            return(new Tuple <int, string>(code, path));
        }
Beispiel #25
0
        /// <summary>
        /// 获取验证码2019年9月版本
        /// </summary>
        /// <returns></returns>
        public Image GetValidateCode_201909()
        {
            Image img = null;

            try
            {
                var            num      = TimeHelp.GetTimeStamp(DateTime.Now);
                var            callback = $"jQuery{RandomHelp.GetRandomNumByLength(20)}_{TimeHelp.GetTimeStamp(DateTime.Now)}";
                RequestPackage request  = new RequestPackage("/passport/captcha/captcha-image64");
                request.Params.Add("login_site", "E");
                request.Params.Add("module", "login");
                request.Params.Add("rand", "sjrand");
                request.Params.Add(num, "");
                request.Params.Add("callback", callback);
                request.Params.Add("_", num);
                ArrayList list = TrainHttpContext.GetHtmlData(request);
                if (list.Count == 3)
                {
                    var resStr     = list[1].ToString().CallBackJson();
                    var streamJson = JsonConvert.DeserializeObject <ResCodeImgMsg>(resStr);
                    if (streamJson.result_code.Equals("0"))
                    {
                        img = Base64ToImgHelp.CetFromBase64String(streamJson.image);
                    }
                }
                else
                {
                    Log.Write(LogLevel.Info, "请求/otn/login/init失败");
                }
            }
            catch (Exception ex)
            {
                Log.Write(LogLevel.Error, ex.Message, ex);
            }
            return(img);
        }
Beispiel #26
0
        /// <summary>
        /// 检查登陆状态
        /// </summary>
        /// <param name="loginName"></param>
        /// <param name="loginPwd"></param>
        /// <param name="jsonResult"></param>
        /// <returns></returns>
        public ResponseLogin PostCheckUser201909(out string jsonResult)
        {
            jsonResult = string.Empty;
            ResponseLogin  package = null;
            RequestPackage request = new RequestPackage();

            request.Params.Add("_json_att", "");
            request.RequestURL = "/otn/login/checkUser";
            request.RefererURL = "/otn/leftTicket/init";
            request.Method     = "post";
            ArrayList list = TrainHttpContext.Send(request);

            if (list.Count == 2)
            {
                jsonResult = Encoding.UTF8.GetString(list[1] as byte[]);
                package    = JsonConvert.DeserializeObject <ResponseLogin>(jsonResult);
                Log.Write(LogLevel.Info, jsonResult);
            }
            else
            {
                Log.Write(LogLevel.Info, list.ToString());
            }
            return(package);
        }
        /// <summary>
        /// 火车票查询
        /// </summary>
        /// <param name="fromStation">出发站</param>
        /// <param name="toStation">到达站</param>
        /// <param name="date">日期</param>
        /// <returns></returns>
        public ResponseTicketQuery TicketQuery(string fromStation, string toStation, string date, out string jsonString)
        {
            jsonString = string.Empty;
            ResponseTicketQuery reulst  = null;
            RequestPackage      request = new RequestPackage();

            request.Method     = EHttpMethod.Get.ToString();
            request.RefererURL = "/otn/leftTicket/init";
            request.RequestURL = "/otn/leftTicket/queryA";
            request.Params.Add("leftTicketDTO.train_date", date);
            request.Params.Add("leftTicketDTO.from_station", fromStation);
            request.Params.Add("leftTicketDTO.to_station", toStation);
            request.Params.Add("purpose_codes", "ADULT");
            ArrayList list = TrainHttpContext.Send(request);

            jsonString = Encoding.UTF8.GetString(list[1] as byte[]);
            reulst     = JsonHelper.Deserialize <ResponseTicketQuery>(jsonString);
            string[] data = null;
            if (reulst.status)
            {
                data = reulst.data.result;
            }
            else if (reulst.messages != null && reulst.messages.Length > 0)
            {
                request.RequestURL = reulst.c_url;
                list = TrainHttpContext.Send(request);
                if (list.Count == 2)
                {
                    data = reulst.data.result;
                }
                Log.Write(LogLevel.Info, reulst.messages);
            }
            foreach (var item in data)
            {
                var        r_list = item.Split(new char[] { '|' });
                DetailData detail = new DetailData
                {
                    station_train_code = r_list[3],
                    train_no           = r_list[2],
                    start_time         = r_list[8],
                    end_time           = r_list[9],
                    arrive_time        = r_list[10],
                    from_station_name  = r_list[6],
                    to_station_name    = r_list[7],
                    lishi = r_list[13],
                    //business_seat = r_list[-5],
                    //first_seat = r_list[-6],
                    //second_seat = r_list[-7],
                    gr_num = r_list[-8],
                    rw_num = r_list[-9],
                    //dw = r_list[-10],
                    yw_num = r_list[-11],
                    rz_num = r_list[-12],
                    yz_num = r_list[-13],
                    wz_num = r_list[-14],
                    qt_num = r_list[-15],
                    //remark = r_list[1],
                    seat_types      = r_list[-2],
                    from_station_no = r_list[16],
                    to_station_no   = r_list[17]
                };
            }
            return(reulst);
        }