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("¥", 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; } }
//查找国内单程机票 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; }
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; }
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; }
/* 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; }
public void addDetail(RS_FlightDetail flightDetail) { DetailList.Add(flightDetail); }