コード例 #1
0
ファイル: Worker.cs プロジェクト: tkv80/Chukryong
        protected override void OnDoWork(DoWorkEventArgs e)
        {
            string message = "";

            while (!CancellationPending)
            {
                foreach (var reservation in Reservations)
                {
                    var checkreservation = HttpManager.GetCheckInFacility(reservation.Site.FacilityCode, reservation.Site.SiteCode, reservation.StartDate);

                    if (checkreservation.Item1)
                    {
                        new GcmManager().SendNotification("축령산 날짜찾기 성공", reservation.StartDate.ToString("yyyy-MM-dd"));

                        #region 예약

                        try
                        {
                            //return;
                            var sUrl =
                                "https://chukryong.gg.go.kr:456/new2006/appointment/reserve_write.asp?res_hu=A&res_si={0}&fdate=0";
                            sUrl = string.Format(sUrl, reservation.Site.SiteCode);
                            var telSplit  = reservation.Client.Tel.Split('-');
                            var parameter =
                                string.Format(
                                    "res_name={0}&tel_1={1}&tel_2={2}&tel_3={3}&res_mail={4}&res_add={5}&res_qty={10}&res_bank={8}&res_bankno={9}&res_bankname={0}&res_children=&money_chk=money&s_date={6}&e_date={7}&edd=0&t_money={11}",
                                    HttpUtility.UrlEncode(reservation.Client.Name, Encoding.GetEncoding("euc-kr")),
                                    telSplit[0],
                                    telSplit[1],
                                    telSplit[2],
                                    reservation.Client.Mail,
                                    HttpUtility.UrlEncode(reservation.Client.Address, Encoding.GetEncoding("euc-kr")),
                                    reservation.StartDate.ToString("yyyy-MM-dd"),
                                    reservation.EndDate.ToString("yyyy-MM-dd"),
                                    reservation.Client.BankName,
                                    reservation.Client.BankNumber,
                                    reservation.UserCount,
                                    reservation.Cost);


                            var httpWRequest = (HttpWebRequest)WebRequest.Create(sUrl);
                            httpWRequest.Accept  = "text/html, application/xhtml+xml";
                            httpWRequest.Referer =
                                string.Format(
                                    @"https://chukryong.gg.go.kr:456/new2006/appointment/reserve_rsv.asp?res_hu=A&res_si={0}&st_date={1}&ed_date={2}&su_date=0&su_qty={3}",
                                    reservation.Site.SiteCode,
                                    reservation.StartDate.ToString("yyyy-MM-dd"),
                                    reservation.EndDate.ToString("yyyy-MM-dd"),
                                    reservation.UserCount);
                            httpWRequest.UserAgent =
                                "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
                            httpWRequest.Headers.Add("Accept-Language", "ko-KR");
                            httpWRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
                            httpWRequest.Host            = "chukryong.gg.go.kr:456";
                            httpWRequest.ContentType     = "application/x-www-form-urlencoded";
                            httpWRequest.KeepAlive       = true;
                            httpWRequest.Method          = "Post";
                            httpWRequest.ContentLength   = parameter.Length;
                            httpWRequest.CookieContainer = new CookieContainer();
                            httpWRequest.CookieContainer.Add(new Cookie("__utma",
                                                                        "206204609.1877502704.1378257147.1378257147.1378257148.2", "/", "chukryong.gg.go.kr"));
                            httpWRequest.CookieContainer.Add(new Cookie("__utmb", "206204609.45.10.1378257148", "/",
                                                                        "chukryong.gg.go.kr"));
                            httpWRequest.CookieContainer.Add(new Cookie("__utmz",
                                                                        "06204609.1378257148.2.2.utmcsr=naver|utmccn=(organic)|utmcmd=organic|utmctr=%EC%B6%95%EB%A0%B9%EC%82%B0%EC%9E%90%EC%97%B0%ED%9C%B4%EC%96%91%EB%A6%BC",
                                                                        "/", "chukryong.gg.go.kr"));
                            httpWRequest.CookieContainer.Add(new Cookie("ASPSESSIONIDQAQTDRRQ",
                                                                        "LLNMHHBCJNPNGFELHMAHHJBF", "/",
                                                                        "chukryong.gg.go.kr"));
                            httpWRequest.CookieContainer.Add(new Cookie("__utmc", "206204609", "/", "chukryong.gg.go.kr"));

                            var sw = new StreamWriter(httpWRequest.GetRequestStream());
                            sw.Write(parameter);
                            sw.Close();

                            var theResponse = (HttpWebResponse)httpWRequest.GetResponse();
                            var sr          = new StreamReader(theResponse.GetResponseStream(), Encoding.GetEncoding("euc-kr"));

                            string data = sr.ReadToEnd();

                            if (data.Contains("예약이 완료되었습니다."))
                            {
                                message = string.Format("{0} - 예약완료~ {1}일 {2}사이트\r\n",
                                                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                                        reservation.StartDate.ToString("yyyy-MM-dd"),
                                                        reservation.Site.SiteName);

                                new GcmManager().SendNotification(message, "캠핑예약");
                                CancelAsync();
                            }
                            else
                            {
                                message = string.Format("{0} - 예약실패\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                                //txtLog.AppendText(log);
                            }
                        }
                        catch (WebException webExcp)
                        {
                            var sr = new StreamReader(webExcp.Response.GetResponseStream(),
                                                      Encoding.GetEncoding("euc-kr"));

                            message = sr.ReadToEnd();
                        }
                        catch (Exception ex) // get any other error
                        {
                            message = (ex.Message);
                        }

                        #endregion
                    }
                    else
                    {
                        message = "실패 " + reservation.StartDate + " " + reservation.Site.Facility;
                    }

                    ReportProgress(0, message);

                    Thread.Sleep(100 * Interval);
                }
            }
        }