流腥鱼
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 15,comments - 29,trackbacks - 0
<
2008年12月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(6)
给我留言
查看公开留言
查看私人留言
随笔分类
css(1)
java(6)
Javascript(2)
报表(1)
数据库(1)
编程教程(2)
随笔档案
2009年10月 (1)
2009年5月 (1)
2009年4月 (1)
2009年3月 (2)
2009年2月 (2)
2009年1月 (1)
2008年12月 (3)
2008年11月 (1)
2008年9月 (1)
2008年6月 (3)
相册
插图
最新随笔
1. cas单点登录配置速成
2. eclipse使用svn插件,状态图标、版本号不能显示的解决办法
3. CSS实现完美垂直居中
4. Birt报表使用连接池配置
5. Birt报表安全权限方案
6. 一个不错的js时间控件,支持双月显示,和多天选择
7. 工作流任务环节权限设计
8. linux关闭tomcat进程
9. 使用两个IP实现IIS和Tomcat或Apache共用80端口的方法(转)
10. eclipse svn插件不能正常显示的解决办法
搜索
最新评论
1. re: cas单点登录配置速成
WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp,已经修改了,还是不行;郁闷
--fanfree
2. re: cas单点登录配置速成
@fanfree
注意看红色字体部分就是解决这个问题
--懒人编码
3. re: cas单点登录配置速成
@滕藤
我的可以取得用戶名,拿不到附加属性 --郁闷一周了
--fanfree
4. re: 使用两个IP实现IIS和Tomcat或Apache共用80端口的方法(转)
管不管要先试试
--卖烧烤
5. re: cas单点登录配置速成
貌似我也不行呢
--滕藤
阅读排行榜
1. cas单点登录配置速成(20425)
2. Birt报表使用连接池配置(3624)
3. 使用两个IP实现IIS和Tomcat或Apache共用80端口的方法(转)(3551)
4. 用axis生成客户端接口提高工作效率(2857)
5. Birt报表安全权限方案(2016)
评论排行榜
1. cas单点登录配置速成(13)
2. js瘦身有道--选好合适的减肥药(4)
3. eclipse使用svn插件,状态图标、版本号不能显示的解决办法 (3)
4. Birt报表使用连接池配置(2)
5. Birt报表安全权限方案(2)
用axis生成客户端接口提高工作效率
Axis框架来自 Apache 开放源代码组织,它是基于JAVA语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group )的开放源代码实现。下面是它的核心引擎的体系结构图:
下面以
http://www.webxml.com.cn/webservices/DomesticAirline.asmx?Wsdl
航班查询服务为例来分析开发客户端的步骤。
1.首先从
http://ws.apache.org/axis/index.html
上下载axis的程序包。
2.运行cmd,进入下载包解压后的目录,运行 Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -p client
http://www.webxml.com.cn/webservices/DomesticAirline.asmx?Wsdl
(其中-p是生成代码的包名,根据需要设置)
然后把生成的代码拷贝到项目里面。
3.拷贝axis里面的包到工程里面。
4.客户端代码。
public
List
<
TicketInfo
>
getDomesticAirlinesTime(String startCity, String lastCity, String theDate)
throws
RemoteException, ServiceException
{
DomesticAirline service
=
new
DomesticAirlineLocator();
GetDomesticAirlinesTimeResponseGetDomesticAirlinesTimeResult airlines;
airlines
=
service.getDomesticAirlineSoap12().getDomesticAirlinesTime(startCity, lastCity,theDate,
null
);
MessageElement[] FOCElement
=
airlines.get_any();
List FOCElementHead
=
FOCElement[
0
].getChildren();
//
消息头,DataSet对象
List FOCElementBody
=
FOCElement[
1
].getChildren();
//
消息体信息,DataSet对象
String nn
=
FOCElementBody.get(
0
).toString();
//
消息体的字符串形式
SAXReader reader
=
new
SAXReader();
Document document
=
null
;
try
{
document
=
document
=
DocumentHelper.parseText(nn);
}
catch
(Exception e)
{
//
TODO Auto-generated catch block
System.out.println(e.toString());
}
Element root
=
(Element)document.getRootElement();
//
得到根元素
List
<
TicketInfo
>
ticketInfoList
=
new
ArrayList
<
TicketInfo
>
();
for
(Object e : root.elements())
{
TicketInfo ticketInfo
=
new
TicketInfo();
Element element
=
(Element) e;
ticketInfo.setAirlineCompany(element.elementText(
"
Company
"
));
ticketInfo.setFlightNumber(element.elementText(
"
AirlineCode
"
));
ticketInfo.setStartAirport(element.elementText(
"
StartDrome
"
));
ticketInfo.setEndAirport(element.elementText(
"
ArriveDrome
"
));
ticketInfo.setAirCraftType(element.elementText(
"
Mode
"
));
SimpleDateFormat myFmt
=
new
SimpleDateFormat(
"
HH:mm
"
);
try
{
ticketInfo.setStartTime(myFmt.parse(element.elementText(
"
StartTime
"
)));
ticketInfo.setEndTime(myFmt.parse(element.elementText(
"
ArriveTime
"
)));
}
catch
(ParseException e1)
{
//
TODO Auto-generated catch block
e1.printStackTrace();
}
ticketInfoList.add(ticketInfo);
}
return
ticketInfoList;
}
}
本来客户端代码应该是比较简单的,但是这个例子的webservice服务端是用.net写的,查询后返回DataSet类型,java没有对应的类型,所以只能把返回后的结果用xml来解析,然后在放入java的数据对象里面。
posted on 2008-12-04 10:04
流腥鱼
阅读(2857)
评论(0)
编辑
收藏
所属分类:
编程教程
、
java
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
相关文章:
用axis生成客户端接口提高工作效率
FreeMarker指南