郑兵+胡南
摘 要: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.