public JsonResult GetODFlightSearchData(FlightSearchRequest fsr) { //请求地址 var urls = "http://channel.ceair.com:8849/oDShopping_ODFlightSearch.do"; //请求参数 string jsondata = "flightSearchRequest=" + FlightSearchRequestData(fsr); ////写入日志 //Logger.WriteLog("中转预定查询请求参数:" + System.DateTime.Now + jsondata); //加密数据 //string jsondata2 = Compress(jsondata); ////写入日志 //Logger.WriteLog("中转预定查询加密请求参数:" + System.DateTime.Now + jsondata2); //请求并获得结果 string responseData = webRequestGet(urls + "?" + jsondata, null).ToString(); //写入日志 //Logger.WriteLog("中转预定查询未解密数据:" + System.DateTime.Now + responseData); //解密数据 string data = GZipPress(responseData); //写入日志 //Logger.WriteLog("中转预定查询解密数据:" + System.DateTime.Now + data); //手动解析获得结果 FlightSearchResponse model = JsonConvert.DeserializeObject <FlightSearchResponse>(data); return(Json(model)); }
public async Task <HttpResponseMessage> PostFlightSearch(HttpRequestMessage request, FlightSearch flight) { if (!IsValid(flight)) { return(request.CreateResponse(HttpStatusCode.BadRequest)); } var flights = FlightStorage.GetFlights(flight.From, flight.To, flight.DepartureDate); var response = new FlightSearchResponse(flights); return(request.CreateResponse(HttpStatusCode.OK, response)); }
public FlightSearchResponse Post(FlightSearchRequest request) { return(ApiExceptionHelper.WrapException(() => { if (request == null) { throw new ArgumentNullException(nameof(request)); } _logger.Info("Try flight search: Request='{0}'", request.ToJson()); var response = new FlightSearchResponse { OutboundFlights = Mapper.Map <IEnumerable <FlightSchedule>, IEnumerable <FlightScheduleViewModel> >( _flightScheduleService.GetFlightSchedules( request.FromAirportCode, request.ToAirportCode, request.StartDateTime, request.AdultCount, request.InfantCount, request.ChildrenCount) ), ReturnFlights = request.EndDateTime.HasValue ? Mapper.Map <IEnumerable <FlightSchedule>, IEnumerable <FlightScheduleViewModel> >( _flightScheduleService .GetFlightSchedules( request.ToAirportCode, request.FromAirportCode, request.EndDateTime.Value, request.AdultCount, request.InfantCount, request.ChildrenCount)) : null }; response.OutboundFlights.ForEach(f => f.Price = _priceCalculator.Calculate(f)); response.ReturnFlights?.ForEach(f => f.Price = _priceCalculator.Calculate(f)); _logger.Info("Flight found: Response='{0}'", response.ToJson()); return response; }, _logger)); }
public async Task <IActionResult> Search(FlightSearchDTO model) { FlightSearchResponse availableFlights = null; SearchPageViewModel vm = null; if (ModelState.IsValid) { //create search request object SearchRequestModel rm = new SearchRequestModel { FromLocation = model.From, ToLocation = model.To, DepartureDate = model.DepartureDate.ToShortDateString(), Persons = new List <Person> { new Person { PassengerType = "ADT", Quantity = 1 } }, UserData = new UserData { Ip = "89.134.155.92", BrowserAgent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" } }; try { rm.ReturnDate = model.ReturnDate.Value.ToShortDateString(); } catch (Exception) { rm.ReturnDate = ""; } string rmString = JsonConvert.SerializeObject(rm); StringContent searchRequest = new StringContent(rmString, Encoding.UTF8, "application/json"); try { string responseString = string.Empty; using (var client = HttpService.GetHttpClient()) { while (responseString == string.Empty) { Thread.Sleep(3000); var result = await client.PostAsync("https://dev.allmyles.com/v2.0/flights", searchRequest); responseString = await result.Content.ReadAsStringAsync(); } } availableFlights = JsonConvert.DeserializeObject <FlightSearchResponse>(responseString); } catch (Exception e) { Debug.WriteLine(e.Message); } } if (availableFlights != null) { vm = new SearchPageViewModel(); vm.FirstLegs = new List <FlightSegment>(); vm.ReturnLegs = new List <FlightSegment>(); foreach (var resultSet in availableFlights.flightResultSet) { foreach (var combination in resultSet.combinations) { foreach (var flighSegments in combination.firstLeg.flightSegments) { vm.FirstLegs.Add(flighSegments); } foreach (var flighSegments in combination.returnLeg.flightSegments) { vm.ReturnLegs.Add(flighSegments); } } } } return(View(vm)); }