这几天需在android上需要通过webservice进行数据的获取,以前虽然知道webservice但是从来没有动手去操作过,这次因为接触到了,所以就尝试去
了解一下webservice的开发过程以及调用过程,写篇博客记录一下。
首先我们应该了解一下什么是webservice,简单来说webservice就是一种客户端与服务器,服务器与服务器之间数据的一种交互方式。他通过一种机器
可以理解的格式标记WSDL(web service description language)来描述要公开的接口,WSDL它是以XML格式来表现的。通过他公开的接口,我们可以
传入一些必要数据来获取我们想要的数据。在传入数据以及获取数据的过程中他又基于了一套协议(SOAP),对如何进行参数传递如果获取结果进行
规范。也就是我们想传入数据给一个公开的接口,那么首先要用SOAP协议将这些数据进行包装,然后将包装后的数据使用HTTP或者TCP或者其他协议
传递给目的机器。然后我们怎样去获取WSDL这样的文件呢?如果你需要将你的接口公布于全世界,那么你就需要在UDDI上进行注册,UDDI是一个基于
XML跨平台的描述规划,可以世界范围内的企业在互联网上发布自己提供的服务。这些东西就构成了webservice了。一上只是浅略的说了一下我对web-
service的理解,还有疑惑的可以自己google,一搜一大把。
下面我们来通过不同的方式来构建webservice,并且去向他获取数据。
一:通过JAX-WS方式来部署webservice 开发环境:MyEclipse8.5,Tomcat6.0.37。
1.通过MyEclipse创建WebServiceProject工程MyService,然后新建一个类MyServiceServer,定义一个方法
。
package com.lonuery.test;
public class MyServiceServer {
public String play(String userName){
return userName + "--创建了第一个WebService工程";
}
}
2.菜单栏->File->New->other->MyService->Web Services->Web Service
3.点击继续,选项按照上面的选项进行勾选。
输入你要创建webService的类,要输入包名,勾选上WSDL in Project。记住你的Service name 和 Service port。然后点击finish。我们就会看到
在我们之前创建的MyServiceServer类的同一个包下会自动创建一个MyServiceServerDelegate的类,至此webService已经开发并发布完毕。
接下来就是添加一些相关联的包,在MyEclipse中就能够直接关联,右击项目->properties->Java Build Path->Libraries->add Library->
MyEclipse Libraries
接下来就是启动Tomcat,编写调用的客户端。
启动Tomcat:工具栏->点击一个服务器类型的小标志->点击Tomcat 6.x->Start。启动完毕后将这个项目部署到Tomcat中,与console在同一个工具栏中有一个Server
的工具,如果没有,点击Window->Show View 选择Server将其显示出来。然后在Server栏中有一个Tomcat 的标志,右击,选择Add Deployment。会出现一个弹窗
点击Project 选择你所创建的工程,点击finish。这样WebService就算部署完毕了。
编写客户端:
创建一个Java Project:MyServiceProject,创建一个类ClientPlay。然后如上述步骤,在步骤3的时候,我们在创建Web Service project的时候,会看见在MyEclipse
的目录下会有一个My Service Client的目录。点击My Service Client,
点击继续>
在 WSDL URL的选项框中输入 WSDL的地址。这个地址在,我们之前创建的MyService工程->WebRoot->WEB-INF->wsdl 我们可以看见有个叫做
MyServiceServerService.wsdl 的文件,进去查看,找到service的标签
<service name="MyServiceServerService">
<port binding="tns:MyServiceServerPortBinding" name="MyServiceServerPort">
<soap:address location="http://localhost:8080/MyService/MyServiceServerPort"/>
</port>
</service>
上面的那个address location地址就是WSDL的地址。将这个地址复制到URL的输入框,点击next,他会在我们的Client工程下自动创建一些的的类。
接下来我们就可以在ClientPlay类中去写调用WebService的方法了:
public static void main(String[] args) {
ServerPlayDelegate server = new ServerPlayService().getServerPlayPort();
System.out.println(server.play("那里格朗"));
}
运行的结果如下:
至此我们的webService创建完毕并且发布出去了,客户端调用webService的例子也成功获取到数据。