package cn.com.soap;
import java.io.File;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpProtocolParams;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 作者:Andre
* 时间:2016-8-31下午5:25:33
*/
public class DomesticAirline{
/**
*
* @param startCity 出发城市(中文城市名称或缩写、空则默认:上海);
* @param lastCity 抵达城市(中文城市名称或缩写、空则默认:北京)
* @param theDate 出发日期(String 格式:yyyy-MM-dd,如:2007-7-2,空则默认当天)
* @param userID 商业用户ID(免费用户不需要)
* @return
* @throws Exception
*/
@SuppressWarnings("deprecation")
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
*/
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集合用来存储获取到的信息
Map<String, AirLineInfo> map=new HashMap<String, AirLineInfo>();
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~6
count=1;
}
}
}
//循环遍历list集合
// for (AirLineInfo airLineInfo : list) {
// System.out.println(airLineInfo);
// }
return list;
}
@SuppressWarnings("deprecation")
public static List<CityInfo> getDomesticCityString () throws Exception{
String url = "/webservices/DomesticAirline.asmx/getDomesticCity";
String host = "www.webxml.com.cn";
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;
}
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 =
没有合适的资源?快使用搜索试试~ 我知道了~
webservice调用国内飞机航班时刻表 WEB 服务
共66个文件
class:21个
java:19个
jar:12个
3星 · 超过75%的资源 需积分: 5 49 下载量 114 浏览量
2016-09-01
11:36:37
上传
评论 1
收藏 3.09MB ZIP 举报
温馨提示
国内飞机航班时刻表 Web Service 提供:通过出发城市和到达城市查询飞机航班、出发机场、到达机场、出发和到达时间、飞行周期、航空公司、机型等信息。 使用的是java调用的,其中解析了xml文件
资源推荐
资源详情
资源评论
收起资源包目录
TheClient.zip (66个子文件)
TheClient
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.wst.common.component 465B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 500B
com.genuitec.eclipse.ws.prefs 78B
org.eclipse.jdt.core.prefs 364B
src
cn
com
soap
a.xml 34KB
DomesticAirline.java 9KB
TestAir.java 490B
PraseXml.java 4KB
PraseXml2.java 828B
AirLineInfo.java 3KB
CityInfo.java 852B
webxml
DomesticAirline.java 4KB
GetDomesticCity.java 757B
DomesticAirlineSoap.java 3KB
GetDomesticCityResponse.java 4KB
package-info.java 792B
ObjectFactory.java 3KB
GetDomesticAirlinesTime.java 3KB
GetDomesticAirlinesTimeResponse.java 4KB
DataSet.java 2KB
finished
DomesticAirline.java 9KB
TestAir.java 494B
AirLineInfo.java 3KB
CityInfo.java 856B
.project 2KB
WebRoot
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 404B
classes
cn
com
soap
a.xml 34KB
DomesticAirline.class 7KB
PraseXml2.class 1KB
AirLineInfo.class 3KB
TestAir.class 1KB
CityInfo.class 1KB
PraseXml.class 3KB
webxml
GetDomesticCityResponse.class 1KB
GetDomesticAirlinesTime.class 1KB
GetDomesticCityResponse$GetDomesticCityResult.class 1KB
DomesticAirlineSoap.class 2KB
DomesticAirline.class 3KB
GetDomesticCity.class 580B
GetDomesticAirlinesTimeResponse$GetDomesticAirlinesTimeResult.class 1KB
ObjectFactory.class 3KB
GetDomesticAirlinesTimeResponse.class 1KB
DataSet.class 899B
package-info.class 320B
finished
DomesticAirline.class 7KB
AirLineInfo.class 3KB
TestAir.class 2KB
CityInfo.class 1KB
lib
httpcore-4.4.4.jar 319KB
dom4j-1.6.1.jar 307KB
httpmime-4.5.2.jar 40KB
httpclient-win-4.5.2.jar 17KB
jdom.jar 150KB
httpclient-4.5.2.jar 719KB
httpclient-cache-4.5.2.jar 155KB
jna-4.1.0.jar 893KB
jna-platform-4.1.0.jar 1.4MB
commons-codec-1.9.jar 258KB
commons-logging-1.2.jar 60KB
fluent-hc-4.5.2.jar 31KB
.mymetadata 300B
.classpath 1KB
.myeclipse
共 66 条
- 1
资源评论
- 饺子_面2018-04-16日期为啥输入什么都一样?
- qq_384047032017-12-23接口不能用是什么鬼
- 神经大条蕾弟2017-05-19没用的,运行不了shushengcoder2017-06-20可以运行的,都是经过测试的
shushengcoder
- 粉丝: 1304
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功