访问web服务的方式

目前使用J2ME应用程序访问Web Service有三种方式:REST技术、KSOAP API、JSRl72(WSA)。这三种方式体现了访问服务从底层到高层的发展过程:
(1)原始的方式是REST,就是用URL来代表资源,通过HTTP协议的Get,Post,Put,Delete方法来对资源进行操作,然后对XML进行解析,包括对SOAP信封的解析,获得所需的数据,所有过程都由程序员自己来做,很容易出错,不利于代码复用,更没有安全性可言。

(2)KSOAP API将上述过程自动化,但客户端需要知道Web服务的接口才可以调用Web服务。它主要应用在未支持JSRl72标准的设备上,它可以通过定义数据类来通过Serializable之类的接口持久化和还原它们自身,并且使用KSOAP API来动态调用适当的方法和创建SOAP信封,然后使用KXML解析器自动进行解析的,以供应用程序处理。在项目中使用KSOAP,只需要添加开发包ksoap.midp.jar和kxml_min.jar

(3)使用MIDP2.0中的JSRl72(WSA,Web Service API)。JSRl72是在JCP中开发的,它扩展了J2ME以支持Web服务。WSA是基于存根的系统,开发人员可以使用工具(J2ME Wireless Toolkit中附带了一个工具Stub Generator)从描述一组Web服务的Web服务描述语言(WSDL)文件生成一组存根类。生成的存根包括在应用程序中,可以调用Web服务,这些存根负责打包请求和解包响应。

下面简单的描述一下kSOAP2访问web服务
1 要访问web服务,就要从服务代理知道服务的地址,命名空间,服务的访问点及这个web服务提供什么功能,服务的参数格式、如何向服务添加参数,以及服务的返回值类型。本文无须从服务代理那里查找基站定位的服务,这个服务自己已经写好了,并且发布在tomcat下本文的服务的命名空间是"http://service.location.com",web服务的地址为"http://localhost:8080/axis2/services/LocationService" ;
2 新建一个SoapObject对象,
SoapObject request = new SoapObject(serviceNamespace,”getMyLocationService”);
3 添加服务的参数借助SoapObject的对象request的addProperty()方法,它有两个参数,第一个是参数的变量,第二个是要传递的对象,可以包括任何信息。这里要添加基站号。
4 把要传递的参数进行序列化,通过SoapSerializationEnvelope对象的bodyOut赋值为request。
5 把序列化后的数据交给HttpTransport对象,访问web服务的地址。
6 通过SoapSerializationEnvelope对象的getResponse()方法接收服务的返回值,并把它赋值给SoapObject的对象。
7 对返回值进行去理,通过j2me中的Lwuit 进行显示。

你可能感兴趣的:(tomcat,Web,应用服务器,REST,SOAP)