예제 #1
0
        private void getFlightAbout(String html)
        {
            int iTableStart = html.IndexOf("stage flights", 0);
            int iTableEnd = html.IndexOf("</ul>", iTableStart);
            string strtable = html.Substring(iTableStart, iTableEnd - iTableStart + 5);
            while (true)
            {
                RS_FlightRoute flightAbout = new RS_FlightRoute();
                flightAbout.FlightType = "直达";
                RS_FlightDetail flightDetail = new RS_FlightDetail();
                int startLi = strtable.IndexOf("<li", 0);
                int endLi = strtable.IndexOf("</li", startLi);

                int flightStart = strtable.IndexOf("<p class=\"n\">", 0);
                int flightEnd = strtable.IndexOf("</p>", flightStart);
                String flight = strtable.Substring(flightStart + 13, flightEnd - flightStart - 13);
                for (int i = 0; i < flight.Length; i++)
                {
                    if (flight[i] >= 'A' && flight[i] <= 'Z')
                    {
                        String agency = flight.Substring(0, i);
                        String flightNum = flight.Substring(i);
                        flightDetail.Airline = agency.Trim();
                        flightDetail.FlightNum = flightNum.Trim();
                        break;
                    }
                }
                int timeStart = strtable.IndexOf("<p class=\"i\">", flightEnd);
                int timeEnd = strtable.IndexOf("<br", timeStart);
                String time = strtable.Substring(timeStart + 13, timeEnd - timeStart - 13);
                String TakeOffTime = time.Substring(0, time.IndexOf("-") - 1);
                String ArriveTime = time.Substring(time.IndexOf("-") + 2);
                flightDetail.TakeOffTime = TakeOffTime.Trim(); ;
                flightDetail.ArriveTime = ArriveTime.Trim();
                int portEnd = strtable.IndexOf("</p>", timeEnd);
                String port = strtable.Substring(timeEnd + 6, portEnd - timeEnd - 6).Trim();
                String DPort = port.Substring(0, port.IndexOf("-") - 1);
                String APort = port.Substring(port.IndexOf("-") + 2);
                if (APort.IndexOf("<span") > 0)
                {
                    APort = APort.Substring(0, APort.IndexOf("<span") - 1) + "(经停)";
                }
                flightDetail.DPort = DPort.Trim();
                flightDetail.APort = APort.Trim();

                String agencyUrl = "http://touch.qunar.com/flightDetail.jsp?flightType=oneWay&startCity=" + startCity + "&destCity=" + destCity + "&startDate=" + startDate + "&code=" + flightDetail.FlightNum + "&minPrice=&bd_source=qunar";
                String agencyHtml = getWebHtml(agencyUrl);
                int priceStart = agencyHtml.IndexOf("&yen;", 0);
                int priceEnd = agencyHtml.IndexOf("</em>", priceStart);
                flightDetail.MinPrice = agencyHtml.Substring(priceStart + 5, priceEnd - priceStart - 5);
                flightDetail.AgencyList = getFlightAgency(agencyHtml);

                flightAbout.addDetail(flightDetail);
                flightInfo.addAbout(flightAbout);
                if (strtable.IndexOf("<li", portEnd) > 0)
                    strtable = strtable.Substring(strtable.IndexOf("<li", portEnd));
                else
                    break;
            }
        }
예제 #2
0
        //查找国内单程机票
        public RS_FlightList S_DomesticOneWayFlight(string _dCity, string _aCity, DateTime _dDate)
        {
            RS_FlightList fl = new RS_FlightList();
            OneWayFlight flight1 = new OneWayFlight(_dCity, _aCity, _dDate.ToString("yyyy-MM-dd"));
            if (!flight1.hasFlight())
                return fl;

            fl = flight1.getFlightInfo();

            FlightResponseList frl = flightHelper.SearchDmstOneWayFlight(_dCity, _aCity, _dDate);

            foreach (FlightResponseData frd in frl.flightResponses[0].flightResponseDatas)
            {
                bool notExist = true;
                for (int i = 0; i < fl.RouteList.Count; i++)
                {
                    RS_FlightDetail dfd = fl.RouteList[i].DetailList[0];
                    if (dfd.FlightNum == frd.flight)
                    {
                        this.ReplaceFlightDetail(dfd, frd);
                        notExist = false;
                    }
                }
                if (notExist)
                {
                    RS_FlightDetail dfd = new RS_FlightDetail();
                    this.ReplaceFlightDetail(dfd, frd);
                }
            }
            return fl;
        }
예제 #3
0
 private RS_FlightDetail getFlightDetail(String flightDetail)
 {
     RS_FlightDetail flight = new RS_FlightDetail();
     int airlineStart = flightDetail.IndexOf("<p class=\"n\">", 0);
     int airlineEnd = flightDetail.IndexOf("</p>", airlineStart);
     String flight1 = flightDetail.Substring(airlineStart + 13, airlineEnd - airlineStart - 13);
     for (int i = 0; i < flight1.Length; i++)
     {
         if (flight1[i] >= 'A' && flight1[i] <= 'Z')
         {
             String airline = flight1.Substring(0, i);
             flight.Airline = airline.Trim();
             flight.FlightNum = flight1.Substring(i).Trim();
             break;
         }
     }
     int timeStart = flightDetail.IndexOf("<p class=\"i\">");
     int timeEnd = flightDetail.IndexOf("<br/>", timeStart);
     String time = flightDetail.Substring(timeStart + 13, timeEnd - timeStart - 13);
     String TakeOffTime = time.Substring(0, time.IndexOf("-") - 1);
     String ArriveTime = time.Substring(time.IndexOf("-") + 2);
     flight.TakeOffTime = TakeOffTime.Trim();
     flight.ArriveTime = ArriveTime.Trim();
     int portEnd = flightDetail.IndexOf("</p>", timeEnd);
     String port = flightDetail.Substring(timeEnd + 5, portEnd - timeEnd - 5).Trim();
     String DPort = port.Substring(0, port.IndexOf("-"));
     String APort = port.Substring(port.IndexOf("-") + 2);
     if (APort.IndexOf("<span") > 0)
     {
         APort = APort.Substring(0, APort.IndexOf("<span") - 1) + "(经停)";
     }
     flight.DPort = DPort.Trim();
     flight.APort = APort.Trim();
     return flight;
 }
예제 #4
0
        private RS_FlightDetail ReplaceIntlFlightDetail(RS_FlightDetail ifd, IntlFlightResponseData ifrd)
        {
            Agency ag = new Agency();
            ag.AgencyName = ifrd.provider;
            ag.price = ifrd.standardPrice.ToString();
            ifd.AgencyList.Add(ag);
            if (System.Convert.ToDecimal(ifd.MinPrice) > ifrd.standardPrice)
                ifd.MinPrice = ag.price;
            ifd.Airline = ifrd.airline;
            ifd.CraftType = ifrd.craftType;
            ifd.APort = ifrd.aPort;
            ifd.ArriveTime = System.Convert.ToDateTime(ifrd.arriveTime).ToUniversalTime().ToString();
            ifd.DPort = ifrd.dPort;
            ifd.OilFee = ifrd.fuelCharge.ToString();
            ifd.Tax = ifrd.tax.ToString();
            ifd.TakeOffTime = System.Convert.ToDateTime(ifrd.takeOffTime).ToUniversalTime().ToString();
            ifd.Stops = ifrd.TotalRoutings;

            return ifd;
        }
예제 #5
0
        /*
        public RS_FlightDetail GetFlightAgency(string _flight)
        {
        }*/
        private RS_FlightDetail ReplaceFlightDetail(RS_FlightDetail dfd, FlightResponseData frd)
        {
            Agency ag = new Agency();
            ag.AgencyName = frd.provider;
            ag.price = frd.standardPrice.ToString();
            dfd.AgencyList.Add(ag);
            if (System.Convert.ToDecimal(dfd.MinPrice) > frd.standardPrice)
                dfd.MinPrice = ag.price;
            dfd.Airline = frd.airline;
            dfd.CraftType = frd.craftType;
            dfd.APort = frd.aPort;
            dfd.ArriveTime = frd.arriveTime.ToUniversalTime().ToString();
            dfd.DPort = frd.dPort;
            dfd.OilFee = frd.adultOilFee.ToString();
            dfd.Tax = frd.adultTax.ToString();
            dfd.TakeOffTime = frd.takeOffTime.ToUniversalTime().ToString();

            return dfd;
        }
예제 #6
0
 public void addDetail(RS_FlightDetail flightDetail)
 {
     DetailList.Add(flightDetail);
 }