WebService 是一种基于 SOAP协议的远程调用标准。 通过 WebService 可以将不同操作系统平台,
不同语言、不同技术整合到一起。在 Android SDK 中并没有提供调用 WebService 的库,因此,
需要使用第三方类库 (KSOAP2)来调用 WebService 。在本文将介绍在 Android 中调用 WebService
的具体细节,并在最后给出一个完整的例子来演示如何使用 KSOAP2来调用 WebService 。
安装第三方类库: KSOAP2
PC 版本的 WebService 客户端类库非常丰富,例如, Axis2 、CXF等,但这些类库对于 Android 系
统过于庞大,也未必很容易移植到 Android 系统上。因此,这些开发包并不在我们考虑的范围内。适合手
机的 WebService 客户端类库也有一些。本例使用了比较常用的 KSOAP2。读者可以从如下的地址下载
Android 版的 KSOAP2。
http://code.google.com/p/ksoap2-android/downloads/list?can=1&q=&colspec=Filename+Summary+Up
loaded+Size+DownloadCount
将下载后的 jar 文件复制到 Eclipse 工程的 lib 目录中(如果没有该目录,可以新建一个,当然,
也可以放在其他的目录中)。并在 Eclipse 工程中引用这个 jar 包,引用后的 Eclipse 工程目录结构如图
1 所示。
图 1 引用 KSOAP2开发包
使用 KSOAP2调用 WebService
读者可按如下 6 步来调用 WebService 的方法。
1. 指定 WebService 的命名空间和调用的方法名,代码如下:
1 SoapObject request = new SoapObject("http://service", "getName");
SoapObject 类的第 1 个参数表示 WebService 的命名空间,可以从 WSDL 文档中找到 WebService 的
命名空间。第 2 个参数表示要调用的 WebService 方法名。
2. 设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步。设置方法的参数值的
代码如下:
1 request.addProperty("param1", "value1");
2 request.addProperty("param2", "value2");
要注意的是, addProperty 方法的第 1 个参数虽然表示调用方法的参数名,但该参数值并不一定与服务
端的 WebService 类中的方法参数名一致,只要设置参数的顺序一致即可。
3. 生成调用 WebService 方法的 SOAP 请求信息。该信息由 SoapSerializationEnvelope 对象描述,代码
如下:
1
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
2 envelope.bodyOut = request;
创建 SoapSerializationEnvelope 对象时需要通过 SoapSerializationEnvelope 类的构造方法设置
SOAP 协 议的版本号。该版本号需要根据服务端 WebService 的版本号设置。在创建
SoapSerializationEnvelope 对象后,不要忘了设置 SoapSerializationEnvelope 类的 bodyOut 属性,该属
性的值就是在第 1 步创建的 SoapObject 对象。
评论0
最新资源