webservice调用国内飞机航班时刻表 WEB 服务
昨天帮朋友写的一个调用国内航班时刻表的测试程序,折腾了我好一会的时间,打算把它分享出来,共大家参考,其中wsdl:http://ws.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl
这个是接口文档:http://ws.webxml.com.cn/webservices/DomesticAirline.asmx
,这个wsdl是用来生产java类,但是生成以后调用不成功,没办法,只好用了httpclient自己解析的xml文档
以下是代码部分:
实体类AirLineInfo .java
package cn.com.finished;/*** @author Administrator**/
public class AirLineInfo {// <Company>吉祥航空</Company>
// <AirlineCode>HO1252</AirlineCode>
// <StartDrome>北京首都国际机场</StartDrome>
// <ArriveDrome>上海虹桥国际机场</ArriveDrome>
// <StartTime>06:50</StartTime>
// <ArriveTime>09:05</ArriveTime>
// <Mode>320</Mode>
// <AirlineStop>0</AirlineStop>
// <Week>123456日</Week>
// 返回数据:DataSet,Table(0)结构为
// Item(Company)航空公司、
// Item(AirlineCode)航班号、
// Item(StartDrome)出发机场、
// Item(ArriveDrome)到达机场、
// Item(StartTime)出发时间、
// Item(ArriveTime)到达时间、
// Item(Mode)机型、
// Item(AirlineStop)经停
// 、Item(Week)飞行周期(星期)private String company;private String airlineCode;private String startDrome;private String arriveDrome;private String startTime;private String arriveTime;private String mode;private String airlineStop;private String week;public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}public String getAirlineCode() {return airlineCode;}public void setAirlineCode(String airlineCode) {this.airlineCode = airlineCode;}public String getStartDrome() {return startDrome;}public void setStartDrome(String startDrome) {this.startDrome = startDrome;}public String getArriveDrome() {return arriveDrome;}public void setArriveDrome(String arriveDrome) {this.arriveDrome = arriveDrome;}public String getStartTime() {return startTime;}public void setStartTime(String startTime) {this.startTime = startTime;}public String getArriveTime() {return arriveTime;}public void setArriveTime(String arriveTime) {this.arriveTime = arriveTime;}public String getMode() {return mode;}public void setMode(String mode) {this.mode = mode;}public String getAirlineStop() {return airlineStop;}public void setAirlineStop(String airlineStop) {this.airlineStop = airlineStop;}public String getWeek() {return week;}public void setWeek(String week) {this.week = week;}@Overridepublic String toString() {return "AirLineInfo [航空公司=" + company + ", 航班号=" + airlineCode + ", 出发机场=" + startDrome+ ", 到达机场=" + arriveDrome + ", 出发时间=" + startTime + ", 到达时间=" + arriveTime + ", 机型="+ mode + ", 经停=" + airlineStop + ", 飞行周期(星期)=" + week + "]";}
}
实体类CityInfo.java
package cn.com.finished;public class CityInfo {private String enCityName; // (enCityName)城市英文名称、private String cnCityName; // Item(cnCityName)城市中文名称private String abbreviation; // Item(Abbreviation)缩写public String getEnCityName() {return enCityName;}public void setEnCityName(String enCityName) {this.enCityName = enCityName;}public String getCnCityName() {return cnCityName;}public void setCnCityName(String cnCityName) {this.cnCityName = cnCityName;}public String getAbbreviation() {return abbreviation;}public void setAbbreviation(String abbreviation) {this.abbreviation = abbreviation;}@Overridepublic String toString() {return "CityInfo [城市英文名称=" + enCityName + ", 城市中文名称=" + cnCityName + ", 缩写=" + abbreviation+ "]";}}
调用getDomesticAirlinesTime方法
public static List<AirLineInfo> getDomesticAirlinesTimeString(String startCity ,String lastCity,String theDate,String userID) throws Exception{ String url = "/webservices/DomesticAirline.asmx/getDomesticAirlinesTime"; String host = "www.webxml.com.cn"; String param = "startCity="+URLEncoder.encode(startCity, "utf-8")+"&lastCity="+URLEncoder.encode(lastCity, "utf-8")+"&theDate="+theDate+"+&userID="+userID+""; HttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET,"UTF-8"); HttpGet httpget = new HttpGet("http://"+host+url+"?"+param); ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = httpclient.execute(httpget, responseHandler);
// System.out.println(responseBody); List<AirLineInfo> airList = getDomesticAirlinesTime(responseBody);httpclient.getConnectionManager().shutdown();return airList;} //解析xml字符串/*** * @param xmlString 需要解析的xml字符串,也即xml中的字符串* @return*/@SuppressWarnings("all")private static List<AirLineInfo> getDomesticAirlinesTime (String xmlString) {// 使用 SAXReader 解析 XML SAXReader saxReader = new SAXReader(); Document document = null; try { document = DocumentHelper.parseText(xmlString);} catch (DocumentException e) { e.printStackTrace(); } // 获取根节点 Element root = document.getRootElement(); // 打印节点名称 // System.out.println("<" + root.getName() + ">"); // 获取根节点下的子节点遍历 Iterator<?> iter = root.elementIterator("diffgram"); //创建一个list集合用来存储获取到的信息List<AirLineInfo> list=new ArrayList<AirLineInfo>();// 遍历diffgram节点 while (iter.hasNext()) { // 获取第一个diffgram节点 Element empEle = (Element) iter.next(); // System.out.println("<" + empEle.getName() + ">"); //获取Airlines节点Iterator elementIterator = empEle.elementIterator("Airlines");while (elementIterator.hasNext()) {Element object = (Element) elementIterator.next();Iterator airlinesTimes = object.elementIterator("AirlinesTime");//创建AirLineInfo对象AirLineInfo air=null;while (airlinesTimes.hasNext()) {air=new AirLineInfo();//循环遍历出了每一个AirlinesTime元素Element airlinesTime = (Element) airlinesTimes.next();
// System.out.println(airlinesTime.getName());Iterator everyElement = airlinesTime.elementIterator();int count=1;while (everyElement.hasNext()) {Element every = (Element) everyElement.next();
// Item(Company)航空公司、
// Item(AirlineCode)航班号、
// Item(StartDrome)出发机场、
// Item(ArriveDrome)到达机场、
// Item(StartTime)出发时间、
// Item(ArriveTime)到达时间、
// Item(Mode)机型、
// Item(AirlineStop)经停
// 、Item(Week)飞行周期(星期)if(count==1){air.setCompany(every.getStringValue());}else if (count==2) {air.setAirlineCode(every.getStringValue());}else if (count==3) {air.setStartDrome(every.getStringValue());}else if (count==4) {air.setArriveDrome(every.getStringValue());}else if (count==5) {air.setStartTime(every.getStringValue());}else if (count==6) {air.setArriveTime(every.getStringValue());}else if (count==7) {air.setMode(every.getStringValue());}else if (count==8) {air.setAirlineStop(every.getStringValue());}else if (count==9) {air.setWeek(every.getStringValue());}
// System.out.println(every.getStringValue());count++;}//把对象添加到集合中list.add(air);//保证count为 1~6count=1;}} }//循环遍历list集合
// for (AirLineInfo airLineInfo : list) {// System.out.println(airLineInfo);
// }return list;}
调用getDomesticCity 方法
@SuppressWarnings("all")public static List<CityInfo> getDomesticCityString () throws Exception{ String url = "/webservices/DomesticAirline.asmx/getDomesticCity"; String host = "www.webxml.com.cn"; @SuppressWarnings("deprecation")HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet("http://"+host+url+""); ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = httpclient.execute(httpget, responseHandler);List<CityInfo> cityList = getDomesticCity(responseBody);
// System.out.println(responseBody); httpclient.getConnectionManager().shutdown();return cityList;}@SuppressWarnings("all")private static List<CityInfo> getDomesticCity(String xmlString) {// 使用 SAXReader 解析 XML SAXReader saxReader = new SAXReader(); Document document = null; try { document = DocumentHelper.parseText(xmlString);} catch (DocumentException e) { e.printStackTrace(); } // 获取根节点 Element root = document.getRootElement(); // 打印节点名称 // System.out.println("<" + root.getName() + ">"); // 获取根节点下的子节点遍历 Iterator<?> iter = root.elementIterator("diffgram"); //创建一个list集合用来存储获取到的信息Map<String, AirLineInfo> map=new HashMap<String, AirLineInfo>();List<CityInfo> list=new ArrayList<CityInfo>();// 遍历diffgram节点 while (iter.hasNext()) { // 获取第一个diffgram节点 Element empEle = (Element) iter.next(); // System.out.println("<" + empEle.getName() + ">"); //获取Airlines节点Iterator elementIterator = empEle.elementIterator("Airline1");while (elementIterator.hasNext()) {Element object = (Element) elementIterator.next();Iterator airlinesTimes = object.elementIterator("Address");//创建CityInfo对象CityInfo city=null;while (airlinesTimes.hasNext()) {city=new CityInfo();//循环遍历出了每一个AirlinesTime元素Element airlinesTime = (Element) airlinesTimes.next();
// System.out.println(airlinesTime.getName());Iterator everyElement = airlinesTime.elementIterator();int count=1;while (everyElement.hasNext()) {Element every = (Element) everyElement.next();if(count==1){city.setEnCityName(every.getStringValue());}else if (count==2) {city.setCnCityName(every.getStringValue());}else if (count==3) {city.setAbbreviation(every.getStringValue());}
// System.out.println(every.getStringValue());count++;}//把对象添加到集合中list.add(city);//保证count为 1~3count=1;}} }return list;}
测试类TestAir.java:
List<CityInfo> cityList = DomesticAirline.getDomesticCityString();for (CityInfo cityInfo : cityList) {System.out.println(cityInfo);}List<AirLineInfo> list = DomesticAirline.getDomesticAirlinesTimeString("北京", "太原", "2016-10-2", "");for (AirLineInfo airLineInfo : list) {System.out.println(airLineInfo);}
至此调用完成,上一个成功的截图
这是eclipse项目以及jar包下载地址:webservice调用国内飞机航班时刻表下载链接
ok,完活!
webservice调用国内飞机航班时刻表 WEB 服务相关推荐
- 获取国内飞机航班时刻表数据
WebXml.com.cn 国内飞机航班时刻表 WEB 服务提供:通过出发城市和到达城市查询飞机航班.出发和到达时间.飞行周期.航空公司.机型等信息.国内飞机航班时刻表 WEB 服务提供的飞机航班时刻 ...
- webservice 调用国内航班,天气预报 等外部接口
通过前面的记录,我们知道发布一个服务之后,如果别人需要调用,则必须知道我们的wsdl地址,同理,我们要调用天气预报的接口,也必须得到该对应wsdl,下面给出比较齐全的wsdl网址,需要的可以自己去查阅 ...
- java爬取国内飞机航班轨迹数据jsoup的探索
接到一个爬虫项目,java编写的调用jsoup.来调取国内民航的轨迹.第一步,先进行根据飞机所属于的航空公司,然后根据改航空公司爬出所有的的航班号.第二步,根据查询出的航班号进行飞行轨迹的的数据爬去. ...
- 新发现的Web服务-----免费服务
[新] 中文<->英文双向翻译WEB服务获得标准数据 Endpoint:http://fy.webxml.com.cn/webservices/EnglishChinese.asmx Di ...
- WEB服务(Web Servicrs)| 免费WEB服务 | 商业WEB服务
20多个常用的免费WebService接口 天气预报Web服务,数据来源于中国气象局 Endpoint Disco WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) ...
- JAX-WS Web 服务开发调用和数据传输分析
一. 开发服务 新建maven的web项目就可以了, 1.新建一个web服务 2.服务名称定义 3.更改配置 4.默认建好的服务文件 5.增加一个add的服务 import javax.jws.Web ...
- 在ASP.NET AJAX 1.0框架中访问Web服务
一. 简介 如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...
- 第三十五 ASP.NET和Web服务(二)
*摘要 .异步Web服务 .Web服务中的事务处理 .Web服务中的缓存技术 .WSE技术 * Web服务 .Web Service是在Internet上进行分布式计算的基本构造块. .WebServ ...
- Web 服务编程,REST 与 SOAP
2019独角兽企业重金招聘Python工程师标准>>> 为什么选择 REST 李 三红, 高级软件工程师, IBM 简介: REST 架构风格是一种全新的针对 Web 应用的开发风格 ...
最新文章
- Centos Git1.7.1升级到Git2.2.1
- C语言 比较字符串的大小关系
- python zipfile压缩_Python压缩模块zipfile实现原理及用法解析
- Sublime Text3 多行合并为一行
- python测试题 - 列表,字典,字符串
- 《重构-改善既有代码的设计》学习笔记(二)
- 通过jQuery把数据库里面的数据进行增删查改
- PDO::ATTR_EMULATE_PREPARES
- 《南溪的目标检测学习笔记》——权重初始化
- IOS网络请求的一些需要记录的info设置
- python学习:Python 包
- HM5080E带平衡功能、5V USB输入、8.4V/1.5A两节锂电池充电IC
- Matter 研讨会回顾(第二期)|乐鑫 Matter SDK 开发平台介绍和使用
- 移动互联网创业机会只剩3年
- win10常用软件汇总
- 脉脉的高聘有意义么?
- Web网页设计——“说旅游”
- 招投标行业114个数据源盘点
- 使用 canvas 画矩形,实现橡皮擦功能
- www.ty66.php,韬轩阁