昨天帮朋友写的一个调用国内航班时刻表的测试程序,折腾了我好一会的时间,打算把它分享出来,共大家参考,其中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 服务相关推荐

  1. 获取国内飞机航班时刻表数据

    WebXml.com.cn 国内飞机航班时刻表 WEB 服务提供:通过出发城市和到达城市查询飞机航班.出发和到达时间.飞行周期.航空公司.机型等信息.国内飞机航班时刻表 WEB 服务提供的飞机航班时刻 ...

  2. webservice 调用国内航班,天气预报 等外部接口

    通过前面的记录,我们知道发布一个服务之后,如果别人需要调用,则必须知道我们的wsdl地址,同理,我们要调用天气预报的接口,也必须得到该对应wsdl,下面给出比较齐全的wsdl网址,需要的可以自己去查阅 ...

  3. java爬取国内飞机航班轨迹数据jsoup的探索

    接到一个爬虫项目,java编写的调用jsoup.来调取国内民航的轨迹.第一步,先进行根据飞机所属于的航空公司,然后根据改航空公司爬出所有的的航班号.第二步,根据查询出的航班号进行飞行轨迹的的数据爬去. ...

  4. 新发现的Web服务-----免费服务

    [新] 中文<->英文双向翻译WEB服务获得标准数据 Endpoint:http://fy.webxml.com.cn/webservices/EnglishChinese.asmx Di ...

  5. WEB服务(Web Servicrs)| 免费WEB服务 | 商业WEB服务

    20多个常用的免费WebService接口 天气预报Web服务,数据来源于中国气象局  Endpoint   Disco   WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据)  ...

  6. JAX-WS Web 服务开发调用和数据传输分析

    一. 开发服务 新建maven的web项目就可以了, 1.新建一个web服务 2.服务名称定义 3.更改配置 4.默认建好的服务文件 5.增加一个add的服务 import javax.jws.Web ...

  7. 在ASP.NET AJAX 1.0框架中访问Web服务

    一. 简介     如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...

  8. 第三十五 ASP.NET和Web服务(二)

    *摘要 .异步Web服务 .Web服务中的事务处理 .Web服务中的缓存技术 .WSE技术 * Web服务 .Web Service是在Internet上进行分布式计算的基本构造块. .WebServ ...

  9. Web 服务编程,REST 与 SOAP

    2019独角兽企业重金招聘Python工程师标准>>> 为什么选择 REST 李 三红, 高级软件工程师, IBM 简介: REST 架构风格是一种全新的针对 Web 应用的开发风格 ...

最新文章

  1. Centos Git1.7.1升级到Git2.2.1
  2. C语言 比较字符串的大小关系
  3. python zipfile压缩_Python压缩模块zipfile实现原理及用法解析
  4. Sublime Text3 多行合并为一行
  5. python测试题 - 列表,字典,字符串
  6. 《重构-改善既有代码的设计》学习笔记(二)
  7. 通过jQuery把数据库里面的数据进行增删查改
  8. PDO::ATTR_EMULATE_PREPARES
  9. 《南溪的目标检测学习笔记》——权重初始化
  10. IOS网络请求的一些需要记录的info设置
  11. python学习:Python 包
  12. HM5080E带平衡功能、5V USB输入、8.4V/1.5A两节锂电池充电IC
  13. Matter 研讨会回顾(第二期)|乐鑫 Matter SDK 开发平台介绍和使用
  14. 移动互联网创业机会只剩3年
  15. win10常用软件汇总
  16. 脉脉的高聘有意义么?
  17. Web网页设计——“说旅游”
  18. 招投标行业114个数据源盘点
  19. 使用 canvas 画矩形,实现橡皮擦功能
  20. www.ty66.php,韬轩阁

热门文章

  1. 视觉测量—相机与镜头选型
  2. 毫米波雷达(mmWave)基本原理
  3. 小程序普通选择器的创建详解(我的成长之路_No.2)
  4. VBA隐藏Word表格行
  5. 基于Java的室内停车场管理系统
  6. docker实现原理总结
  7. 想请教大家都在哪个网站买书啊?
  8. python学习笔记之三——MakeHuman源码阅读
  9. 研读网络安全法律法规,提升技术管理者 “法” 商
  10. [学习笔记] python深度学习---第三章 神经网络入门