本人大四,第一次参加正式工作,在上班两个星期时经理让我写一个调用webservice的客户端,我当时很是不解,webservice我连挺都没听过,然后我就在网上到处看,也看了一些视频,终于是知道webservice是啥了,我的理解webservice就是一个一门技术或者可以说是一个框架,他通常用在我们大型的项目中,涉及到多种语言,而且需要调用各自的服务,只要我们提供出来一个接口,就可以让其他语言调用,其实他的原理就是SOAP,简单来说SOAP就是一个通信协议,而我们webservice就约定客户端和服务端都用SOAP协议来传输数据,而我这次接触的是XFire框架,网上说它相对于之前的java中的webservice框架是有很大的优势的,但是具体我也没弄明白。提到webservice还有一个就是不得,就是wsdl,我们必须弄清楚wsdl文件的格式,还有一个webservice调用的时候是在局域网内的,也就是说必须要有具体的IP加上端口,至于外网中的调用,我暂时还没有涉及到。
下面就来说说我这次遇到的问题,首先是服务提供商提供的一些调用文档,我最开始拿到文档的时候是很懵逼的,搞不清楚,接触了几天后才弄清楚,有点后知后觉的意思,这个文档就是服务商提供的约定,简而言之我调用他的服务,我需要先发邮件给他说明白我需要调用他的服务,告诉我申请的服务的AppID,AppName
然后就是这个服务中提供的具体的方法说明,然后服务商提供给我一个调用接口,在内网环境下我们是可以在浏览器中直接访问到这个接口的,显示的是一个XML格式得网页,我们通常叫他wsdl文件
http://ip地址:port(端口号)/服务商应用名称/services/提供服务的接口名称?wsdl
这个时候我们拿到这个接口的第一件事就是把他放在浏览器中去访问试试,如果可以访问成功,网页上将显示wsdl文件,这个时候我们可以将这个文件保存下来
我们测试能不能获取到这个接口的数据时候,用java project中main函数 和web 项目都是可以的
用到的XFire 的jar包很重要,需要用到的包之间在网上找,如果不断提示少包的话慢慢补充
方法一:自动生成客户端代码(使用于服务比较复杂的情况)
新建java项目 --》将刚才的wsdl文件拷贝到项目的根路径下--》这个时候我们new 一个webservice client 将我们刚才新建的java project下的wsdl文件选中即可,一只next到结束,这个时候我们等待自动生成客户端代码。--》新建一个测试类,建一个main函数
代码示例:
Service serviceModel = new ObjectServiceFactory().create(提供服务的接口名称.class);
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
String serviceUrl = "接口地址";//服务商提供的,不用带 ?wsdl
提供服务的接口名称 client = null;
try {
client = (提供服务的接口名称) factory.create(serviceModel, serviceUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
}
System.out.println(client.getTestString("0"));//可以开始调用服务端的方法了
方法二:手动生成客户端代码,适用于服务较为简单的方法
导入一些XFire所需jar包--》手动写与服务端名称相同的接口报名,参数实体类(包名也必须完全相同 )--》建测试类,main函数测试
代码通方法一一样
整个的思路就是这样,其实调用webservice的接口相对于写一个服务端要简单的多,其实测试一个接口的连通性还可以用soapui这个工具,非常直观,大家可以自己去了解。
下次说一下服务端的编写