WebService怎么理解和JDK1.4下使用WebService
来源:互联网 发布:部落冲突天鹰升级数据 编辑:程序博客网 时间:2024/06/05 08:25
由于项目需要,必须使用WebService进行接口数据交换。于是百度了很多有关的信息,挑选了一些解释的非常好的解释:
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法。
WSDL:
好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。
WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述WebService及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。
WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
摘自:http://blog.csdn.net/wooshn/article/details/8069087/ (理解WebService,推荐)
开始没有接触过WebService,只知道它是用来交换数据的,于是就我就想,既然是数据交换,
为什么不使用json?
为什么不使用servlet?
为什么不使用其他的技术?
后来在网上又找到了一篇很好的帖子 http://www.iteye.com/topic/1135747(创建一个简单的WebService实例)
动手做了一个简单的WebService,后来发现WebService确实是个强大的东西。我所理解的如下:
A和B在不同的地方开发,而B需要调用A的方法向A发送数据,于是A先定义了一个规范文件,格式为wsdl,通过这个wsdl告诉B:如果你需要调用我的方法就需要先获得我的代理,然后调用指定的方法,这个方法的返回值和参数在wsdl中都告诉你了。B知道这个wsdl之后,根据这个wsdl去查看怎么获取代理端口,怎么调用方法,需要传什么参数,有什么返回值。就这样B就能成功得调用A的方法,并且成功通讯了。
其实我感觉和post类似,只不过更加规范,对于A来说编程更加简单了。
以上是对WebService的理解,但是这些都不是重点!!!
由于项目的特殊需求,开发环境只能使用JDK1.4,不能使用注解,而刚刚的方法必须要使用到注解,于是又去网上找各种方法,解决方法就是使用各种框架,感觉好复杂,而不用框架都不可以成功。。。。项目的关键步骤是获取代理端口,突然发现了一个神器:WSDL2JAVA,几年前用java开发以及调用webservice服务都是比较复杂的事情,但现在已经变得很简单。Axis已经为我们做好了一切,我们只需要使用它的工具方法生成我们自己想要的webservice服务即可。这里只先讲一下通过WSDL描述,来生成java类的方法。
使用方法:
1、下载WSDL2JAVA.rar包,其中包含activation.jar,axis-ant.jar,axis.jar,commons-discovery-0.2.jar,commons-logging-1.0.4.jar,jaxrpc.jar,log4j-1.2.8.jar,mail.jar,saaj.jar,wsdl4j-1.5.1.jar。
2、解压之后,编辑(包名,输出路径,wsdl)参数并运行WSDL2Java(URL).bat或者WSDL2Java(file).bat后,将在source中生成WebService客户端代码。
3、直接使用生成的代码调用WebService服务即可。
(工具下载地址:http://download.csdn.net/detail/a445849497/9579773)
将生成的java文件导入到项目里面然后直接调用
// 建立本机到服务器的连接 XXXX_Service gtService = new XXXX_ServiceLocator(); // 获得端口和代理 XXX_PortType client = gtService.getXXXXServicePort(); // 调用指定的方法 result = client.XXXX(data);
以上几个步骤就能成功让B调用A的方法了。
接下来让我们来做一个实例:
测试wsdl为一个查询天气的接口:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
目的:调用这个接口的函数,获取天气信息。
步骤:我们可以查看到这个接口对应的函数getWeatherbyCityName
这个wsdl里面已经对这个方法有了说明,如果不看说明的话,我们可以找到下图,就可以知道它需要一个String类型的参数theCityName
下面我们开始使用wsdl2java工具
1.修改URL.bat里面的内容。
2.生成java文件
3.在MyEclipse里面建一个工程,并将这个文件拷进去。
4.有很多错误,那是因为我们没有导包,我们把lib下的包全部导入工程
5.是不是很兴奋,一个错误都没有了,然后我们再新建一个测试类
6.编写测试类,并成功调用。
总结:
为什么要学习web service?
大多数对外接口会实现web service方法而不是http方法,如果你不会,那就没有办法对接。
web service相对http (post/get)有好处吗?
1.接口中实现的方法和要求参数一目了然
2.不用担心大小写问题
3.不用担心中文urlencode问题
4.代码中不用多次声明认证(账号,密码)参数
5.传递参数可以为数组,对象等...
web service相对http(post/get)快吗?
由于要进行xml解析,速度可能会有所降低。
web service 可以被http(post/get)替代吗?
完全可以,而且现在的开放平台都是用的HTTP(post/get)实现的。
摘自:http://my.oschina.net/u/1757458/blog/365588 (WebService和Http的对比)
推荐 http://blog.csdn.net/zhuizhuziwo/article/details/8153327
- WebService怎么理解和JDK1.4下使用WebService
- Webservice理解和使用小记
- webservice怎么简单的使用
- webservice编写和使用
- 发布和使用WebService
- jdk1.6.0.10版本下使用jaxws发布webservice服务遇到的问题
- WebService理解和代码解析
- 理解webservice
- webservice理解
- 理解webservice
- WebService 理解
- Webservice理解
- WebService理解
- webservice理解
- WebService 理解
- webService理解
- 理解WebService
- webService理解
- DM8168学习--内存烧写位置
- Error:Error: Avoid non-default constructors in fragments: use a default construct
- android实用调试技巧
- Spring基于代理的AOP实现
- HIVE和HBASE区别
- WebService怎么理解和JDK1.4下使用WebService
- linux学习9:关机相关指令
- 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar..)
- 当tableview滑到底部,点击cell出现的下拉框无法显示的问题
- 乔帮主告诉你什么是面向对象
- Android学习笔记--Context到底是什么?
- bitmap的六种压缩方式,Android图片压缩
- Android、IOS JavascriptBridge 兼容方案
- HDU 4417 (二分 + 区间第k大)