使用Android应用调用Web Service

Java本身提供了丰富的Web  Service支持,比如Sun公司指定的JAX-WS  2规范,还有Apache开源组织所提供的Axis1、Axis2、CXF等,这些技术不仅可以用于非常方便地对外提供Web  Service,也可以用于简化Web  Service的客户端编程。

对于手机等小型设备而言,它们的计算资源、存储资源都十分有限,因此Android应用不大可能需要对外提供Web  Service,Android应用通常只是充当Web  Service的客户端,调用远程Web  Service。

Google为Android平台开发Web  Service客户端提供了ksoap2-android项目,使用ksoap2-android项目调用Web  Service操作的步骤如下:

1、创建HttpTransportSE对象,该对象用于调用Web  Service操作。

2、创建SoapSerializationEnvelope对象。

【注】从名称来看,SoapSerializationEnvelope代表一个SOAP消息封包;但ksoap2-android项目对SoapSerializationEnvelope的处理比较特殊,它是HttpTransportSE调用Web  Service时信息的载体;客户端需要传入的参数,需要通过SoapSerializationEnvelope对象的bodyOut属性传给服务器;服务器响应生成的SOAP消息也通过该对象的bodyIn属性来获取。

3、创建SoapObject对象,创建该对象时需要传入所要调用Web  Service的命名空间、Web  Service方法名。

4、如果有参数需要传给Web  Service服务器端,调用SoapObject对象的addProperty(String  name , Object  value)方法来设置参数,该方法的name参数指定参数名;value参数指定参数值。

5、调用SoapSerializationEnvelope的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前两步创建的SoapObject对象设为SoapSerializationEnvelope的传出SOAP消息体。

6、调用对象的call()方法,并以SoapSerializationEnvelope作为参数调用远程Web  Service。

7、调用完成后,访问SoapSerializationEnvelope对象的bodyIn属性,该属性返回一个SoapObject对象,该对象就代表了Web  Service的返回消息。解析该SoapObject对象,即可获取调用Web  Service的返回值。

上一篇:php5调用web service


下一篇:CF1076E:Vasya and a Tree