鄭兵+胡南
摘 要:FlightShopping是由中國民航信息集團公司(簡稱:中航信)最新推出的國內機票查詢接口。該文主要工作是完成通過手機端及時對國內機票查詢的研究。其中的關鍵信息是查詢私有運價(低價)機票,通過特定方法和程序,可查詢出代理人的一些特殊價位的機票,而查詢的結果通過JSON數據返回,供其他程序解析使用。
關鍵詞:FlightShopping 查詢 機票
中圖分類號:TP181 文獻標識碼:A 文章編號:1674-098X(2017)02(c)-0120-02
1 研究意義
隨著國民經濟的提升,近年來,乘坐飛機出行的人越來越多,2016年國慶期間,海口美蘭國際機場執飛航班2 503架次,同比增長19.22%,其中計劃進港航班1 248架次,計劃出港航班1 255架次,同比分別增長18.51%和15.94%。而北京首都國際機場(首都機場)2016年9月28日至10月10日期間,進出港航班21 788架次,日均1 676架次,較2015年同期增長2.83%。運送旅客338.24萬人次,日均26.02萬人次,較2015年同期增長4.49%。客戶希望有一個安全可靠、服務到位的機票訂坐平臺。而國內目前的一些平出現出票不及時、出假票、出高價票等問題逐漸凸顯出來。
中航信的主營業務是面向航空公司、機場、機票銷售代理、旅游企業及民航相關機構和國際組織,全方位提供航空客運業務處理、航空旅游電子分銷、機場旅客處理、航空貨運數據處理、互聯網旅游平臺、國際國內客貨運收入管理系統應用和代理結算清算等服務,目前國內所有航公司的數據都要經過中航信。
查詢到的機票時時與中航信對接,保證數據的可靠與準確,重點在于提供便捷、可靠、準確而完善的交易過程,而難點則在于系統并放性與安全性的控制和實現。
2 FlightShopping接口的相關設置
FlightShopping接口是由中航信提供并開通其功能,該文采用的是C#版接口,所以在web.config文件中的
同時,中航信還提供封裝好的動態文件庫IBEClient.dll,需要在整個項目中添加引用,方可以使用后面的類和方法。
3 具體操作過程
總體流程:FlightShopping對象—>設置IBE配置—>設置HeaderIn—>設置OD—>設置TravelPreferences—>設置Option—>Output對象—>調用doFlightShopping方法。
3.1 FlightShopping對象
初使化對象,使用方法如下:
FlightShopping fltshopping = new FlightShopping();
FareInterface service = new FareInterface();
Input input = new Input();
3.2 設置IBE配置信息
由于在web.config文件中已經配置,所以此步無需要配置。
3.3 設置HeaderIn
在第一步設置的Input類中的SetHeaderInType方法是專門用來設置HeaderIn,此方法的定義如下:
public void SetHeaderInType(HeaderInType headerInType_0);
根據此方法需要傳輸的參數,需要自定義一個HeaderInType的類型。在HeaderInType類型中,需要說明的有用戶類型(sysCode)參數,根據情況設置成CRS(代理人)或者ICS(航空公司用戶),銷售渠道(SetChannelID)參數設置成”1E“或”CAET“。
3.4 設置OD
設置查詢航段和日期(originDestinationInfo),由于此類封裝是在請求類(Request)中,所以需要先初使化請求類,Request request = new Request(),由于originDestinationInfo是一個多參數的類,需要先將相關內容放置在動態數組ArrayList中,然后再在Request類設置,方法如下:
FlightShopRequestType flightShopRequestType = new FlightShopRequestType();
ArrayList originDestinationInfo = new ArrayList();
originDestinationInfo.Add(getOriginDestinationInfoType());
flightShopRequestType.SetOriginDestinationInfo(originDestinationInfo);
在getOriginDestinationInfoType()方法設置出發城市、目的城市、出發日期,需要說明的是出發和目的城市需要置機場三字碼(國際通用),起飛日期需要設置DDMMMYY格式。
3.5 設置TravelPreferences
在TravelPreferences中,需要設置的參數有飛行價格的相關參數等,如貨幣、直達、查詢價格的人數、乘機人的類型(成人或者兒童),方法如下:
flightShopRequestType.SetTravelPreferencesType(getTravelPreferencesType());
3.6 設置Option
Option類是設置顯示相關屬性,包括價格是最低價、退改簽信息、數據格式信等,方法如下:
flightShopRequestType.SetOption(getOption());
3.7 信息鏈接
設置完上6個步驟后,需要將相關信息進行連接,方法如下:
request.SetFlightShopRequestType(flightShopRequestType);
input.SetRequest(request);
service.SetInput(input);
3.8 輸出對象并根據返回結果顯示相關數
首先需要初使化輸出對象,Output outT = new Output(),利用Output對象的DoFlightShopping方法設置,第一步設置FareInterface,然后輸出字符串。
4 序列化輸出結果
由于Output輸出的結果是字符串,不方便使用,所以需要對輸出的結果進行序列化。
4.1 價格序列化
根據Output輸出GetResult().GetFlightShopResult().GetPSn().GetPS()獲取到價格數據并保存在PricingSolutionType這個類中,需要說明的是這個結果會有多條,需要通過循環語句獲取。
4.2 其他數據序列化
定義一個數據集類,通過Output輸出GetResult().GetFlightShopResult().GetAvJourneys()的相對應的結果并存在相對應的數據集類當中,然后再通過Newtonsoft.Json.dll這個類庫文件轉換成JSON數據輸出。
輸出結果如下:
[{"rPH":"010101","dt":"26AUG16","Carrier":"CZ","Airline":"6767","Orgcity":"HAK","Deptime":"0750","Dstcity":"CSX","Arritime":"0945","Planestyle":"320","Stopnumber":0,"DepTermAndArriTerm":null,"arrTermAndArriTerm":"T2","Meal":"C","tpm":1100,"listCabinPriceInfo":
[{"CabinNo":"J","CabinInfo":"4","Price":"2360.000000","disCurrCode":"CNY","AirportTax":"50.000000","FuelTax":"0","zValue":"-1.000000","DisCount":"全價","OI":"O"},
{"CabinNo":"C","CabinInfo":"4","Price":"1770.000000","disCurrCode":"CNY","AirportTax":"50.000000","FuelTax":"0","zValue":"-1.000000","DisCount":"7.5","OI":"O"},
{"CabinNo":"D","CabinInfo":"3","Price":"1240.000000","disCurrCode":"CNY","AirportTax":"50.000000","FuelTax":"0","zValue":"7.000000","DisCount":"5.3","OI":"O"}}]
參考文獻
[1] 王皘.面向Web加速的HTTP協議優化機制的研究與設計[D].北京郵電大學,2014.
[2] 端木海.分析旅游業電子商務商業模式——以攜程、去哪兒、途牛為例[J].旅游縱覽(下半月),2014(6):77-80.
[3] 王明宇,劉淑貞.中國領先的互聯網旅游搜索引擎企業——去哪兒網的商業模式分析[J].電子商務,2013(12):20-21.
[4] 張翔.HTML5——移動營銷新利器[J].上海經濟,2015(11):37-38.
[5] 中航信.IBE客戶端FlightShopping接口使用手冊[Z].2013.